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 bb285e4e1b..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.2. +# 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.2' -PACKAGE_STRING='PostgreSQL 9.6.2' +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.2 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.2:";; + 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.2 +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.2, 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 $@ @@ -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.2, 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.2 +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 09a887d4f0..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.2], [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 @@ -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/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/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 6f691f7874..42f4a7c1ea 100644 --- a/contrib/mmts/README.md +++ b/contrib/mmts/README.md @@ -1,159 +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 on all 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 82eee5cf5b..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 @@ -90,7 +94,7 @@ static void MtmSender(Datum arg); static void MtmReceiver(Datum arg); static void MtmMonitor(Datum arg); static void MtmSendHeartbeat(void); -static bool MtmSendToNode(int node, void const* buf, int size, time_t reconnectTimeout); +static bool MtmSendToNode(int node, void const* buf, int size); char const* const MtmMessageKindMnem[] = { @@ -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,9 +188,8 @@ 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, timestamp_t timeoutMsec) @@ -220,18 +198,20 @@ static int MtmWaitSocket(int sd, bool forWrite, timestamp_t timeoutMsec) fd_set set; int rc; timestamp_t deadline = MtmGetSystemTime() + MSEC_TO_USEC(timeoutMsec); - FD_ZERO(&set); - FD_SET(sd, &set); + do { timestamp_t now; MtmCheckHeartbeat(); - now = MtmGetSystemTime(); - if (now > deadline) { + 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 = select(sd+1, forWrite ? NULL : &set, forWrite ? &set : NULL, NULL, &tv)) < 0 && errno == EINTR); + } while ((rc = pg_select(sd+1, forWrite ? NULL : &set, forWrite ? &set : NULL, NULL, &tv, MtmUseRDMA)) < 0 && errno == EINTR); + return rc; } @@ -241,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; @@ -257,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; @@ -273,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; @@ -353,10 +348,7 @@ static void MtmSendHeartbeat() int i; MtmArbiterMessage msg; timestamp_t now = MtmGetSystemTime(); - msg.code = MSG_HEARTBEAT; - msg.disabledNodeMask = Mtm->disabledNodeMask; - msg.connectivityMask = SELF_CONNECTIVITY_MASK; - 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) { @@ -367,14 +359,20 @@ static void MtmSendHeartbeat() 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), MtmHeartbeatSendTimeout)) { - 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 heartbeat to node %d was sent %lld microseconds ago", i+1, now - last_heartbeat_to_node[i]); @@ -383,23 +381,22 @@ static void MtmSendHeartbeat() /* Connectivity mask can be cleared by MtmWatchdog: in this case sockets[i] >= 0 */ if (BIT_CHECK(SELF_CONNECTIVITY_MASK, i)) { MTM_LOG1("Force reconnect to node %d", i+1); - close(sockets[i]); + 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 %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() { @@ -411,113 +408,109 @@ void MtmCheckHeartbeat() } -static int MtmConnectSocket(int node, int port, time_t 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; - timestamp_t afterWait; - timestamp_t beforeWait; - 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; + + snprintf(portstr, sizeof(portstr), "%d", port); - if (!MtmResolveHostByName(host, addrs, &n_addrs)) { - elog(LOG, "Arbiter failed to resolve host '%s' by name", host); + 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; } - beforeWait = MtmGetSystemTime(); - if (errno != EINPROGRESS || start + MSEC_TO_USEC(timeout) < beforeWait ) { - 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); - afterWait = MtmGetSystemTime(); - if (afterWait < beforeWait + MSEC_TO_USEC(MtmHeartbeatSendTimeout)) { - MtmSleep(beforeWait + MSEC_TO_USEC(MtmHeartbeatSendTimeout) - afterWait); + 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 = SELF_CONNECTIVITY_MASK; 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(); @@ -525,8 +518,18 @@ static int MtmConnectSocket(int node, int port, time_t 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; } @@ -542,34 +545,26 @@ 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); } -static bool MtmSendToNode(int node, void const* buf, int size, time_t reconnectTimeout) +static bool MtmSendToNode(int node, void const* buf, int size) { bool result = true; nodemask_t save_mask = busy_mask; 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 @@ -580,13 +575,12 @@ static bool MtmSendToNode(int node, void const* buf, int size, time_t reconnectT } 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, reconnectTimeout); + sockets[node] = MtmConnectSocket(node, Mtm->nodes[node].con.arbiterPort); if (sockets[node] < 0) { - MtmOnNodeDisconnect(node+1); result = false; break; } @@ -604,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; @@ -612,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); @@ -636,17 +631,15 @@ static void MtmAcceptOneConnection() MtmCheckResponse(&req.hdr); MtmUnlock(); - resp.code = MSG_STATUS; - resp.disabledNodeMask = Mtm->disabledNodeMask; - resp.connectivityMask = SELF_CONNECTIVITY_MASK; + 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) { @@ -676,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; @@ -713,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(); @@ -744,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, @@ -763,14 +765,14 @@ static void MtmSender(Datum arg) for (i = 0; i < Mtm->nAllNodes; i++) { if (txBuffer[i].used != 0) { - MtmSendToNode(i, txBuffer[i].data, txBuffer[i].used*sizeof(MtmArbiterMessage), MtmReconnectTimeout); + MtmSendToNode(i, txBuffer[i].data, txBuffer[i].used*sizeof(MtmArbiterMessage)); txBuffer[i].used = 0; } } 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 */ } @@ -789,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; } @@ -802,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(); @@ -817,17 +818,23 @@ static void MtmMonitor(Datum arg) BackgroundWorkerInitializeConnection(MtmDatabaseName, NULL); while (!stop) { - int rc = WaitLatch(&MyProc->procLatch, WL_TIMEOUT | WL_POSTMASTER_DEATH, MtmHeartbeatSendTimeout); + int rc = WaitLatch(&MyProc->procLatch, WL_TIMEOUT | WL_POSTMASTER_DEATH, MtmHeartbeatRecvTimeout); if (rc & WL_POSTMASTER_DEATH) { break; } + + 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; @@ -844,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(); @@ -870,31 +878,38 @@ static void MtmReceiver(Datum arg) 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 = 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)) @@ -927,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; @@ -936,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 %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 = SELF_CONNECTIVITY_MASK; - 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; } @@ -984,45 +998,46 @@ 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 %llu from node %d", (long64)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 %s (%llu) from node %d", + MTM_ELOG(WARNING, "Receive deteriorated %s response for transaction %s (%llu) from node %d", MtmMessageKindMnem[msg->code], ts->gid, (long64)ts->xid, node); continue; } @@ -1033,20 +1048,23 @@ 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 %llu from node %d", + 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 %s (%llu) see less nodes than node %d: %llx instead of %llx", + 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) { @@ -1059,17 +1077,10 @@ static void MtmReceiver(Datum arg) 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(); - MtmResetTransaction(); - StartTransactionCommand(); - SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); - CommitTransactionCommand(); - MtmLock(LW_EXCLUSIVE); + ts->isPrepared = false; + SetLatch(&ProcGlobal->allProcs[ts->procno].procLatch); } else { ts->status = TRANSACTION_STATUS_UNKNOWN; MtmWakeUpBackend(ts); @@ -1079,13 +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 %s (%llu) from node %d", + 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)", ts->gid, (long64)ts->xid); + 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) { @@ -1095,7 +1107,7 @@ static void MtmReceiver(Datum arg) case MSG_PRECOMMITTED: MTM_TXTRACE(ts, "MtmTransReceiver got MSG_PRECOMMITTED"); if (ts->status == TRANSACTION_STATUS_COMMITTED) { - elog(WARNING, "Receive PRECOMMITTED response for already committed transaction %s (%llu) from node %d", + MTM_ELOG(WARNING, "Receive PRECOMMITTED response for already committed transaction %s (%llu) from node %d", ts->gid, (long64)ts->xid, node); continue; } @@ -1111,8 +1123,8 @@ static void MtmReceiver(Datum arg) } } else { Assert(ts->status == TRANSACTION_STATUS_ABORTED); - elog(WARNING, "Receive PRECOMMITTED response for aborted transaction %s (%llu) from node %d", - ts->gid, (long64)ts->xid, node); // How it can happen? SHould we use assert here? + 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); } @@ -1122,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(); @@ -1151,7 +1147,7 @@ static void MtmReceiver(Datum arg) } if (Mtm->status == MTM_ONLINE) { now = MtmGetSystemTime(); - /* Check for heartbeats only in case of timeout expiration: it means that we do not have unproceeded events. + /* 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) { @@ -1178,4 +1174,3 @@ static void MtmReceiver(Datum arg) } proc_exit(1); /* force restart of this bgwroker */ } - diff --git a/contrib/mmts/bgwpool.c b/contrib/mmts/bgwpool.c index 5e076c2fd0..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); diff --git a/contrib/mmts/bgwpool.h b/contrib/mmts/bgwpool.h index 551c763570..68fcffde38 100644 --- a/contrib/mmts/bgwpool.h +++ b/contrib/mmts/bgwpool.h @@ -13,7 +13,7 @@ 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 687f953bd8..cc826ce5b9 100644 --- a/contrib/mmts/bkb.h +++ b/contrib/mmts/bkb.h @@ -14,6 +14,7 @@ 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/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 db1529509b..9a6df43a84 100644 --- a/contrib/mmts/doc/architecture.md +++ b/contrib/mmts/doc/architecture.md @@ -2,25 +2,33 @@ ## Intro -Multi-master consists of two major subsystems: synchronous logical replication and arbiter process that is -respostible for health checks and cluster recovery automation. +Multi-master consists of two major subsystems: synchronous logical replication and an arbiter process that performs health checks and enables cluster recovery automation. ## Replication -When postgres loads multi-master shared library it sets up [[logical replication|logrep doc link]] producer an consumer to each node in the cluster and hooks into transaction commit pipeline. Since each server can accept writes it is possible that any server can abort transaction due to concurrent update - in the same way as it happens on a single server between different backends. Usual way of dealing with such situations is to perform transaction in two steps: first try to ensure that commit is possible (PREPARE stage) and if all nodes acknowledged that then we can finally commit. Postgres support such [[two-phase commit|https://www.postgresql.org/docs/9.6/static/sql-prepare-transaction.html]] procedure. So multi-master captures each commit statement and implicitly transforms it to PREPARE, waits when cohort (all nodes except our) will get that transaction via replication protocol and only after successfull responses from cohort finally commit it. +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]. -Also to be able to resist node crashes and network failures ordinary two-phase commit (2PC) is insufficient. When failure happens between PREPARE and COMMIT survived nodes may not have enough information to decide what to do with prepared transaction -- crashed node can already commit or abort that transaction, but didn't notified other nodes about that and such transaction will block resouces (hold locks) until recovery of crashed node. Otherwise if we decide to commit/abort transaction without knowing faled node's decision then we can end up with data inconsistencies in database when failed node will be recovered (e.g. failed node committed transaction but survived node aborted it). +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: -To be able to deal with crashes E3PC commit protocol was used [1][2]. Main idea of 3PC-like protocols is to write intention to commit transaction before actual commit, introducing new message (PRECOMMIT) in protocol between PREPARE and COMMIT messages. That message is not used during normal work, but in case of failure all nodes have enough information to decide what to do with transaction using quorum-based voting procedure. For voting to complete protocol requires majority of nodes to be presenet, hence the rule that cluster of 2N+1 can tolerate N simultaneous failures. +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. -This process summarized on following diagram: +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) -Here user, connected to a backend (BE) decides to commit his transaction. Multi-master extension hooks that commit and changes it to a PREPARE statement. During transaction execution walsender process (WS) already started to decode transaction to "reorder buffer", and by the time when PREPARE statement happend WS starting sending our transaction to all neighbouring nodes (cohort). Then cohort nodes applies that transaction in walreceiver process (WR) and, after succes, signaling arbbiter process (Arb on diagram, custom background worker implemented in multimaster) to send vote for transaction (prepared) on initiating node. -Arbiter process on initiating node wait until all nodes from cohort will send vote for transaction; after that he send "precommit" messages and waits till all nodes will respond to that with "precommited" message. -When all participating sites answered with "precommited" message arbiter signalling backend to stop waiting and commit our prepared transaction. -After that commit WAL record reaches cohort nodes via walsender/walreceiver connections. +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 @@ -37,10 +45,22 @@ Multi-master replicates such statements on statement-based level wrapping them a --> -## Failure detection and recovery +## 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. -While multi-master allows writes to each node it waits responses about transaction acknowledgement from all other nodes, so without special actions in case of failure of any node each commit will wait until failed node recovery. To deal with such kind of situations multi-master periodically send heartbeats to check health and connectivity between nodes. When several hearbeats to the node are lost in a row (see configuration parameters ```multimaster.heartbeat_recv_timeout``` and ```multimaster.heartbeat_send_timeout```) that node can be kicked out the cluster to allow writes to alive nodes. +When a failed node connects back to the cluster, `multimaster` starts the automatic recovery process: -For alive nodes there is no way to distinguish between faled node that stopped serving requests and network-partitioned node that isn't reacheable by other nodes, but can be reacheble by database users. So to protect from split-brain situations (conflicting writes to nodes in different network partitions) in case pf failure multi-master allow writes only to nodes that sees majority of other nodes. For example when 5-node multi-master cluster experienced failure that splitted network into two isolated subnets with 2 and 3 cluster nodes then multi-master based on heartbeats propagation info will continue to accept writes at each node in bigger patition and deny all writes in smaller one. Speking generaly cluster consisting from 2N+1 can tolerate N node failures and will be alive if any N+1 alive and connected to each other. In case of partial network split, when different nodes have different connectivity (for example in 3-node cluster when node B can't access node C, but node A can access both B and C) multi-master will find fully-connected subset of nodes and switch off other nodes. Each node maintance data structure that keeps status of all nodes from this node's point of view, that is accessible through ```mtm.get_nodes_state()``` system view. +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. -When failed node connects back to the cluster recovery process is started. Recovering node will select one of the cluster nodes to apply changes that were made while node was offline. That process will continue till recovering catches up to ```multimaster.min_recovery_lag``` WAL lag (default: 100kB). After that all cluster locks for writes to allow recovery process to finish. After recovery is done returned node is promoted to online status and returned back to replication scheme as it was before failure. Such automatic recovery only possible when failed node WAL lag behind the working ones is not more then ```multimaster.max_recovery_lag```. When failed node's lag is bigger ```multimaster.max_recovery_lag``` then node should be manually recovered using pg_basebackup from one of the working nodes. +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/multimaster--1.0.sql b/contrib/mmts/multimaster--1.0.sql index bdfe37d3cf..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,19 +18,28 @@ CREATE FUNCTION mtm.stop_replication() RETURNS void AS 'MODULE_PATHNAME','mtm_stop_replication' LANGUAGE C; +-- 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 stopped +-- 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' @@ -35,15 +53,14 @@ 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, "connectivityMask" bigint, "stalled" bool, "stopped" bool); +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" bigint, "configChanges" integer, "stalledNodeMask" bigint, "stoppedNodeMask" bigint); +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 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); @@ -55,18 +72,26 @@ 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 +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; @@ -83,5 +108,46 @@ CREATE FUNCTION mtm.check_deadlock(xid bigint) RETURNS boolean AS 'MODULE_PATHNAME','mtm_check_deadlock' LANGUAGE C; -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 ea14f92b8c..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); @@ -113,6 +121,7 @@ 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); @@ -120,11 +129,14 @@ 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); @@ -143,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); @@ -155,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 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" }; @@ -215,85 +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 bool MtmMajorNode; +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) * Multimaster uses trash of 2N+1 lwlocks, where N is number of nodes. - * locks[0] is used to synchronize access to multimaster state, + * 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 %lld 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) @@ -302,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]); } /* @@ -317,9 +434,9 @@ 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; } /* @@ -327,57 +444,58 @@ timestamp_t MtmGetSystemTime(void) */ 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); @@ -411,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) +{ +} + /* * ------------------------------------------- @@ -418,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(); @@ -455,172 +616,196 @@ 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=%lld) is invisibile in snapshot %lld", - MyProcPid, xid, ts->csn, MtmTx.snapshot); - if (MtmGetSystemTime() - start > USECS_PER_SEC) { - elog(WARNING, "Backend %d waits for transaction %s (%llu) status %lld usecs", MyProcPid, ts->gid, (long64)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 %llu", 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 %llu of %llu usec (%f%%), maximum=%llu", 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= %lld) is %s in snapshot %lld", - MyProcPid, xid, ts->csn, invisible ? "rollbacked" : "committed", MtmTx.snapshot); - MtmUnlock(); - if (MtmGetSystemTime() - start > USECS_PER_SEC) { - elog(WARNING, "Backend %d waits for %s transaction %s (%llu) %lld usecs", MyProcPid, invisible ? "rollbacked" : "committed", + } + 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 %llu", 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 %llu in %lld usec", (long64)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=%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=%lld, ts->xid=%d, ts->status=%d, ts->snapshot=%lld, oldestSnapshot=%lld", + 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=%lld, ts->xid=%d, ts->status=%d, ts->snapshot=%lld, oldestSnapshot=%lld", + } 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. @@ -632,7 +817,7 @@ MtmAdjustOldestXid(TransactionId xid) static void MtmTransactionListAppend(MtmTransState* ts) { - if (!ts->isEnqueued) { + if (!ts->isEnqueued) { ts->isEnqueued = true; ts->next = NULL; ts->nSubxids = 0; @@ -643,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) @@ -676,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; @@ -693,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; @@ -713,20 +898,20 @@ MtmXactCallback(XactEvent event, void *arg) 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 @@ -736,11 +921,11 @@ MtmIsUserTransaction() IsNormalProcessingMode() && MtmDoReplication && !am_walsender && - !IsBackgroundWorker && + !MtmBackgroundWorker && !IsAutoVacuumWorkerProcess(); } -void +void MtmResetTransaction() { MtmCurrentTrans* x = &MtmTx; @@ -750,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 caught-up. - * Only "own" transactions are blocked. Transactions replicated from other nodes (including recovered transaction) should be proceeded - * and should not cause cluster status change. + * 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 %llu", + 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; @@ -826,90 +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 %s (%llu)", x->gid, (long64)x->xid); + 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 %s (%llu) because it's coordinator %d was disabled", x->gid, (long64)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=%lld)", + 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"); @@ -922,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; } } @@ -937,7 +1182,7 @@ bool MtmWatchdog(timestamp_t now) return allAlive; } -/* +/* * Mark transaction as precommitted */ void MtmPrecommitTransaction(char const* gid) @@ -947,17 +1192,17 @@ 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); if (!IsTransactionState()) { @@ -965,51 +1210,56 @@ void MtmPrecommitTransaction(char const* gid) StartTransactionCommand(); SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); CommitTransactionCommand(); - } else { + } 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) { 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) - { - elog(WARNING, "Abort transaction %s (%llu) because cluster configuration is changed from %llx to %llx since transaction start", - ts->gid, (long64)ts->xid, ts->participantsMask, liveNodesMask); + { + 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) { + + 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=%llx disabled=%llx, voted=%llx)", + 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) { @@ -1019,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; @@ -1043,60 +1292,73 @@ Mtm2PCVoting(MtmCurrentTrans* x, MtmTransState* ts) 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)) - { + { 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) { - elog(LOG, "Distributed transaction %s (%llu) is not committed in %lld msec", ts->gid, (long64)ts->xid, 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 (%llu) is canceled because of %lld msec timeout expiration", + 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 %s (%llu) is canceled because node is switched to %s mode", + } 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 { - elog(WARNING, "Commit of distributed transaction %s (%llu) is canceled because cluster configuration was changed", + } 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"); @@ -1105,72 +1367,73 @@ MtmPostPrepareTransaction(MtmCurrentTrans* x) return; } - if (Mtm->inject2PCError == 2) { + if (Mtm->inject2PCError == 2) { Mtm->inject2PCError = 0; - elog(ERROR, "ERROR INJECTION for transaction %s (%llu)", x->gid, (long64)x->xid); + 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_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 if (!ts->isLocal) { - 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 %s (%llu)", x->gid, (long64)x->xid); + MTM_ELOG(ERROR, "ERROR INJECTION for transaction %s (%llu)", x->gid, (long64)x->xid); } MTM_TXTRACE(x, "PostPrepareTransaction Finish"); } -static void +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) { + if (!ts->isLocal) { ts->votingCompleted = false; ts->votedMask = 0; ts->procno = MyProc->pgprocno; @@ -1178,10 +1441,11 @@ MtmPreCommitPreparedTransaction(MtmCurrentTrans* x) Assert(replorigin_session_origin == InvalidRepOriginId); MtmUnlock(); SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); - //MtmSend2PCMessage(ts, MSG_PRECOMMIT); MtmLock(LW_EXCLUSIVE); Mtm2PCVoting(x, ts); + } else { + ts->status = TRANSACTION_STATUS_UNKNOWN; } x->xid = ts->xid; @@ -1189,36 +1453,41 @@ MtmPreCommitPreparedTransaction(MtmCurrentTrans* x) 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); + 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(tm->state); + MtmAbortTransaction(ts); + if (ts->isTwoPhase) { + MtmDeactivateTransaction(ts); + } } MtmUnlock(); x->status = TRANSACTION_STATUS_ABORTED; - } else { + } 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; @@ -1226,40 +1495,49 @@ MtmLogAbortLogicalMessage(int nodeId, char const* gid) strcpy(msg.gid, gid); msg.origin_node = nodeId; msg.origin_lsn = replorigin_session_origin_lsn; - lsn = 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 %s (%llu)", + 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) { @@ -1267,31 +1545,34 @@ MtmEndTransaction(MtmCurrentTrans* x, bool commit) 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 { + } 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 %s (%llu) local xid=%llu to coordinator %d", + 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) { + 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; } @@ -1301,39 +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) { + 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(); } } -/* +/* + * 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) +void MtmSendMessage(MtmArbiterMessage* msg) { SpinLockAcquire(&Mtm->queueSpinlock); { @@ -1341,14 +1639,17 @@ 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); } } @@ -1356,61 +1657,56 @@ void MtmSendMessage(MtmArbiterMessage* msg) } /* - * Send arbiter's 2PC message. Right now only responses to coordinates are - * sent through arbiter. Brodcasts from coordinator to noes are done + * 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 = SELF_CONNECTIVITY_MASK; - 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); } } -/* - * Broadcase poll state message to all nodes. +/* + * 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 = SELF_CONNECTIVITY_MASK; - 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); @@ -1421,7 +1717,7 @@ static void MtmBroadcastPollMessage(MtmTransState* ts) /* * Restore state of recovered prepared transaction in memory. - * This function is called at system startup to make it possible to + * This function is called at system startup to make it possible to * handle this prepared transactions in normal way. */ static void MtmLoadPreparedTransactions(void) @@ -1430,7 +1726,7 @@ 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); @@ -1440,9 +1736,9 @@ static void MtmLoadPreparedTransactions(void) 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; @@ -1454,46 +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() -{ - MtmLock(LW_EXCLUSIVE); - BIT_SET(Mtm->disabledNodeMask, MtmNodeId-1); - Mtm->nConfigChanges += 1; - MtmSwitchClusterMode(MTM_RECOVERY); - Mtm->recoveredLSN = INVALID_LSN; - MtmUnlock(); -} - static void MtmDropSlot(int nodeId) { - ReplicationSlotDrop(psprintf(MULTIMASTER_SLOT_PATTERN, 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->stalledNodeMask, nodeId-1); BIT_SET(Mtm->stoppedNodeMask, nodeId-1); /* stalled node can not be automatically recovered */ MtmUnlock(); } - + /* - * Prepare context for applying transaction at replica + * 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) +void MtmJoinTransaction(GlobalTransactionId* gtid, csn_t globalSnapshot, nodemask_t participantsMask) { + nodemask_t liveMask; + MtmTx.gtid = *gtid; MtmTx.xid = GetCurrentTransactionId(); MtmTx.isReplicated = true; @@ -1502,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) @@ -1545,10 +1849,10 @@ 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 + * 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. */ @@ -1563,17 +1867,17 @@ 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) { + 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; @@ -1597,13 +1901,12 @@ 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) @@ -1612,29 +1915,24 @@ void MtmWakeUpBackend(MtmTransState* ts) 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 %s (%llu)", ts->gid, (long64)ts->xid); - } else { +{ + 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; - } } } } @@ -1645,7 +1943,7 @@ 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 @@ -1653,52 +1951,60 @@ void MtmAbortTransaction(MtmTransState* ts) 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? + /* 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 MtmPollStatusOfPreparedTransactionsForDisabledNode(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 %s (%llu)", ts->gid, (long64)ts->xid); - 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_LOG1("Skip transaction %s (%llu) with status %s gtid.node=%d gtid.xid=%llu votedMask=%llx", + 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); } } @@ -1706,139 +2012,68 @@ static void MtmPollStatusOfPreparedTransactionsForDisabledNode(int disabledNodeI /* * Poll status of all active prepared transaction. - * This function is called before start of recovery to prevent blocking of recovery process by some + * 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() { MtmTransState *ts; - for (ts = Mtm->transListHead; ts != NULL; ts = ts->next) { - if (TransactionIdIsValid(ts->gtid.xid) + 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)) + && (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); + 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", + 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); } } } -/* - * Node is disabled if it is not part of clique built using connectivity masks of all nodes. - * There is no warranty that all noeds 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 - */ -static void MtmDisableNode(int nodeId) -{ - timestamp_t now = MtmGetSystemTime(); - elog(WARNING, "Disable node %d at xlog position %llx, last status change time %d msec ago", nodeId, (long64)GetXLogInsertRecPtr(), - (int)USEC_TO_MSEC(now - Mtm->nodes[nodeId-1].lastStatusChangeTime)); - BIT_SET(Mtm->disabledNodeMask, nodeId-1); - Mtm->nConfigChanges += 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 */ - MtmPollStatusOfPreparedTransactionsForDisabledNode(nodeId); - } -} - -/* - * Node is anabled when it's recovery is completed. - * This why node is mostly marked as recovered when logical sender/receiver to this node is (re)started. - */ -static void MtmEnableNode(int nodeId) -{ - if (BIT_SET(Mtm->disabledNodeMask, nodeId-1)) { - BIT_CLEAR(Mtm->disabledNodeMask, nodeId-1); - BIT_CLEAR(Mtm->reconnectMask, 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; - } - elog(WARNING, "Enable node %d at xlog position %llx", nodeId, (long64)GetXLogInsertRecPtr()); - } -} - -/* - * Function call when recovery of node is completed - */ -void MtmRecoveryCompleted(void) -{ - int i; - MTM_LOG1("Recovery of node %d is completed, disabled mask=%llx, connectivity mask=%llx, endLSN=%llx, live nodes=%d", - MtmNodeId, Mtm->disabledNodeMask, - SELF_CONNECTIVITY_MASK, (long64)GetXLogInsertRecPtr(), Mtm->nLiveNodes); - if (Mtm->nAllNodes >= 3) { - elog(WARNING, "restartLSNs at the end of recovery: {%llx, %llx, %llx}", - Mtm->nodes[0].restartLSN, Mtm->nodes[1].restartLSN, Mtm->nodes[2].restartLSN); - } - MtmLock(LW_EXCLUSIVE); - Mtm->recoverySlot = 0; - Mtm->recoveredLSN = GetXLogInsertRecPtr(); - BIT_CLEAR(Mtm->disabledNodeMask, MtmNodeId-1); - Mtm->nConfigChanges += 1; - Mtm->reconnectMask |= SELF_CONNECTIVITY_MASK; /* 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 %lld is larger than threshold %d", + 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); + MtmDropSlot(nodeId); } } } } /* - * Get lag between replication slot position (dsata proceeded by WAL sender) and current position in WAL + * 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) { @@ -1851,352 +2086,158 @@ 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 to it 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; } } -/* +/* * 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 + * 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) { MtmLock(LW_EXCLUSIVE); - if (MtmIsRecoveredNode(nodeId)) { + if (MtmIsRecoveredNode(nodeId)) { lsn_t walLSN = GetXLogInsertRecPtr(); - if (!BIT_CHECK(Mtm->nodeLockerMask, nodeId-1) - && slotLSN + MtmMinRecoveryLag > walLSN) - { + if (!BIT_CHECK(Mtm->originLockNodeMask, nodeId-1) + && slotLSN + (long64) MtmMinRecoveryLag * 1024 > walLSN) + { /* * 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 %llx, WAL position %llx, 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_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 %d, active transactions %d", nodeId, slotLSN, - walLSN, MyWalSnd->sentPtr, Mtm->nLockers, Mtm->nActiveTransactions); + " WAL sender position %llx, lockers %llx, active transactions %d", nodeId, slotLSN, + walLSN, MyWalSnd->sentPtr, Mtm->orinLockNodeMask, Mtm->nActiveTransactions); } } MtmUnlock(); } -/* +/* * Notification about node recovery completion. - * If recovery is in progess and WAL sender replays all records in WAL, then enable recovered node and send notificatoin to it about end of recovery. + * 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) { bool caughtUp = false; MtmLock(LW_EXCLUSIVE); - if (MtmIsRecoveredNode(nodeId) && Mtm->nActiveTransactions == 0) { - if (BIT_CHECK(Mtm->nodeLockerMask, nodeId-1)) { - MTM_LOG1("Node %d is caught-up at WAL position %llx", nodeId, walEndPtr); - BIT_CLEAR(Mtm->walSenderLockerMask, MyWalSnd - WalSndCtl->walsnds); - BIT_CLEAR(Mtm->nodeLockerMask, nodeId-1); - Mtm->nLockers -= 1; - } else { - MTM_LOG1("Node %d is caught-up at WAL position %llx without locking cluster", nodeId, walEndPtr); - /* We are lucky: caught-up without locking cluster! */ - } - MtmEnableNode(nodeId); + if (MtmIsRecoveredNode(nodeId) && Mtm->nActiveTransactions == 0) { + MtmStateProcessNeighborEvent(nodeId, MTM_NEIGHBOR_RECOVERY_CAUGHTUP); caughtUp = true; + MtmIsRecoverySession = false; } MtmUnlock(); return caughtUp; } /* - * This function is called inside critical section - */ -void MtmSwitchClusterMode(MtmNodeStatus mode) -{ - Mtm->status = mode; - Mtm->nodes[MtmNodeId-1].lastStatusChangeTime = MtmGetSystemTime(); - MTM_LOG1("Switch to %s mode", MtmNodeStatusMnem[mode]); - /* ??? Something else to do here? */ -} - - -/* - * 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. - */ -static void -MtmCheckClusterLock() -{ - timestamp_t delay = MIN_WAIT_TIMEOUT; - while (true) - { - nodemask_t mask = Mtm->walSenderLockerMask; - if (mask != 0) { - if (Mtm->nActiveTransactions == 0) { - lsn_t 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 caught up with master */ - MTM_LOG1("WAL-sender %d complete recovery", i); - BIT_CLEAR(Mtm->walSenderLockerMask, i); - } - } - } - } - if (mask != 0) { - /* some "almost cautch-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 have synchronized their logs */ - /* Remove lock and mark them as recovered */ - MTM_LOG1("Complete recovery of %d nodes (node mask %llx)", Mtm->nLockers, Mtm->nodeLockerMask); - Assert(Mtm->walSenderLockerMask == 0); - Assert((Mtm->nodeLockerMask & Mtm->disabledNodeMask) == Mtm->nodeLockerMask); - Mtm->disabledNodeMask &= ~Mtm->nodeLockerMask; - Mtm->nConfigChanges += 1; - Mtm->nLiveNodes += Mtm->nLockers; - Mtm->nLockers = 0; - Mtm->nodeLockerMask = 0; - MtmCheckQuorum(); - } - } - break; - } -} - -/** - * Build internode connectivity mask. 1 - means that node is disconnected. + * Prevent start of any new transactions at this node */ static void -MtmBuildConnectivityMatrix(nodemask_t* matrix) +MtmLockCluster(void) { - int i, j, n = Mtm->nAllNodes; - bool changed = false; - - for (i = 0; i < n; i++) { - matrix[i] = Mtm->nodes[i].connectivityMask; - if (lastKnownMatrix[i] != matrix[i]) - { - changed = true; - lastKnownMatrix[i] = matrix[i]; - } + timestamp_t delay = MIN_WAIT_TIMEOUT; + if (MtmClusterLocked) { + MtmUnlockCluster(); } - - /* Print matrix if changed */ - if (changed) + 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) { - 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); - } -} - - -/** - * Build connectivity graph, find clique in it and extend disabledNodeMask by nodes not included in clique. - * This fnuctions is called by arbiter monitor process with period MtmHeartbeatSendTimeout - */ -void MtmRefreshClusterStatus() -{ - nodemask_t mask, newClique, disabled; - nodemask_t matrix[MAX_NODES]; - int cliqueSize; - nodemask_t oldClique = ~Mtm->disabledNodeMask & (((nodemask_t)1 << Mtm->nAllNodes)-1); - int i; - - MtmBuildConnectivityMatrix(matrix); - newClique = MtmFindMaxClique(matrix, Mtm->nAllNodes, &cliqueSize); - - if (newClique == oldClique) { - /* Nothing is changed */ - return; - } - - do { - /* 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. - */ - oldClique = newClique; - MtmSleep(MSEC_TO_USEC(MtmHeartbeatSendTimeout)*2); /* double timeout to condider worst case when heartbeat send interval is added with refresh cluster status interval */ - MtmBuildConnectivityMatrix(matrix); - newClique = MtmFindMaxClique(matrix, Mtm->nAllNodes, &cliqueSize); - } while (newClique != oldClique); - - if (cliqueSize >= Mtm->nAllNodes/2+1 || (cliqueSize == (Mtm->nAllNodes+1)/2 && MtmMajorNode)) { /* 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(newClique, i) ? '+' : '-', stderr); - } - putc('\n', stderr); - - MTM_LOG1("Find clique %llx, disabledNodeMask %llx", newClique, Mtm->disabledNodeMask); - MtmLock(LW_EXCLUSIVE); - disabled = ~newClique & (((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 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 %llx has no quorum", newClique); - MtmSwitchClusterMode(MTM_IN_MINORITY); + 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(); } /* - * Check if there is quorum: current node see more than half of all nodes + * Remove global cluster lock set by MtmLockCluster */ -void MtmCheckQuorum(void) +static void +MtmUnlockCluster(void) { - if (Mtm->nLiveNodes >= Mtm->nAllNodes/2+1 || (Mtm->nLiveNodes == (Mtm->nAllNodes+1)/2 && MtmMajorNode)) { /* have quorum */ - if (Mtm->status == MTM_IN_MINORITY) { - MTM_LOG1("Node is in majority: disabled mask %llx", Mtm->disabledNodeMask); - MtmSwitchClusterMode(MTM_ONLINE); - } - } else { - if (Mtm->status == MTM_ONLINE) { /* out of quorum */ - elog(WARNING, "Node is in minority: disabled mask %llx", Mtm->disabledNodeMask); - MtmSwitchClusterMode(MTM_IN_MINORITY); - } - } -} - -/* - * This function is called in case of non-recoverable connection failure with this node. - * Non-recoverable means that connections can not be reestablish using specified number of attempts. - * It sets bit in connectivity mask and register delayed refresh of cluster status which build connectivity matrix - * and determine clique of connected nodes. Timeout here is needed to allow all nodes to exchanges their connectivity masks (them - * are sent together with any arbiter message, including heartbeats. - */ -void MtmOnNodeDisconnect(int nodeId) -{ - timestamp_t now = MtmGetSystemTime(); - if (BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)) - { - /* Node is already disabled */ - return; - } - if (Mtm->nodes[nodeId-1].lastStatusChangeTime + MSEC_TO_USEC(MtmNodeDisableDelay) > now) - { - /* Avoid false detection of node failure and prevent node status blinking */ - return; - } MtmLock(LW_EXCLUSIVE); - BIT_SET(SELF_CONNECTIVITY_MASK, nodeId-1); - BIT_SET(Mtm->reconnectMask, nodeId-1); - elog(LOG, "Disconnect node %d connectivity mask %llx", - nodeId, (long long)SELF_CONNECTIVITY_MASK); + 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(); } /* - * This method is called when connection with node is reestablished + * 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. */ -void MtmOnNodeConnect(int nodeId) +static void +MtmCheckClusterLock() { - MtmLock(LW_EXCLUSIVE); - elog(LOG, "Connect node %d connectivity mask %llx", nodeId, (long long)SELF_CONNECTIVITY_MASK); - BIT_CLEAR(SELF_CONNECTIVITY_MASK, nodeId-1); - BIT_SET(Mtm->reconnectMask, nodeId-1); /* force sender to reestablish connection and send heartbeat */ - MtmUnlock(); + 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(); + MtmSleep(delay); + if (delay*2 <= MAX_WAIT_TIMEOUT) { + delay *= 2; + } + MtmLock(LW_EXCLUSIVE); + } } -/* - * Set reconnect mask to force reconnection attempt to the node - */ -void MtmReconnectNode(int nodeId) +int MtmGetNumberOfVotingNodes() { - MtmLock(LW_EXCLUSIVE); - BIT_SET(Mtm->reconnectMask, nodeId-1); - MtmUnlock(); + 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; } - - /* * ------------------------------------------- * Node initialization @@ -2204,11 +2245,11 @@ void MtmReconnectNode(int nodeId) */ /* - * Initialize Xid2State hash table to obtain status of transaction by its local XID. + * 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* +static HTAB* MtmCreateXidMap(void) { HASHCTL info; @@ -2227,11 +2268,11 @@ MtmCreateXidMap(void) } /* - * Initialize Gid2State hash table to obtain status of transaction by GID. + * 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* +static HTAB* MtmCreateGidMap(void) { HASHCTL info; @@ -2243,49 +2284,49 @@ MtmCreateGidMap(void) "MtmGid2State", MTM_MAP_SIZE, MTM_MAP_SIZE, &info, - HASH_ELEM + HASH_ELEM ); return htab; } -/* +/* * Initialize hash table used to mark local (not distributed) tables */ -static HTAB* +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; @@ -2301,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); @@ -2332,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); @@ -2356,8 +2397,8 @@ static void MtmCheckControlFile(void) } } -/* - * Perform initialization of multimaster state. +/* + * Perform initialization of multimaster state. * This function is called from shared memory startup hook (after completion of initialization of shared memory) */ static void MtmInitialize() @@ -2369,31 +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->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->walSenderLockerMask = 0; - Mtm->nodeLockerMask = 0; + Mtm->inducedLockNodeMask = 0; + Mtm->currentLockNodeMask = 0; + Mtm->originLockNodeMask = 0; Mtm->reconnectMask = 0; Mtm->recoveredLSN = INVALID_LSN; - Mtm->nLockers = 0; 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; @@ -2406,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; @@ -2418,6 +2467,9 @@ static void MtmInitialize() 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 */ @@ -2428,19 +2480,19 @@ static void MtmInitialize() 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) { @@ -2449,6 +2501,48 @@ 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 @@ -2457,39 +2551,43 @@ void MtmUpdateNodeConnectionInfo(MtmConnectionInfo* conn, char const* connStr) { char const* host; char const* end; - int hostLen; + int hostLen; char const* port; - int connStrLen = (int)strlen(connStr); + 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); conn->hostName[hostLen] = '\0'; - + 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; } - elog(WARNING, "Using arbiter port: %d", conn->arbiterPort); + MTM_ELOG(INFO, "Using arbiter port: %d", conn->arbiterPort); port = strstr(connStr, " port="); if (port == NULL && strncmp(connStr, "port=", 5) == 0) { @@ -2497,15 +2595,15 @@ void MtmUpdateNodeConnectionInfo(MtmConnectionInfo* conn, char const* connStr) } if (port != NULL) { if (sscanf(port+6, "%d", &conn->postmasterPort) != 1) { - elog(ERROR, "Invalid postmaster port: %s", port+6); + MTM_ELOG(ERROR, "Invalid postmaster port: %s", port+6); } - } else { + } else { conn->postmasterPort = DEF_PGPORT; } } /* - * Parse "multimaster.conn_strings" configuration parameter and + * Parse "multimaster.conn_strings" configuration parameter and * set connection string for each node using MtmUpdateNodeConnectionInfo */ static void MtmSplitConnStrs(void) @@ -2515,121 +2613,123 @@ 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 || strcmp(MtmConnections[i].hostName, "localhost") == 0) - && MtmConnections[i].postmasterPort == PostPortNumber) - { - 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 port %d", buf, PostPortNumber); + + 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); } @@ -2640,21 +2740,23 @@ 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; @@ -2664,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; @@ -2673,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; @@ -2681,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; @@ -2689,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; @@ -2704,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, @@ -2728,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, @@ -2749,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 @@ -2773,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 @@ -2795,7 +2897,7 @@ _PG_init(void) 1, INT_MAX, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2807,11 +2909,11 @@ _PG_init(void) "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, + 10 * 1024, /* 10 MB */ 0, + INT_MAX, + PGC_SIGHUP, + GUC_UNIT_KB, NULL, NULL, NULL @@ -2820,12 +2922,25 @@ _PG_init(void) 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 " + "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, + 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, @@ -2833,12 +2948,38 @@ _PG_init(void) NULL ); + DefineCustomBoolVariable( + "multimaster.bypass", + "Allow access to offline multimaster node", + NULL, + &MtmBypass, + false, + PGC_USERSET, /* context */ + 0, + NULL, + NULL, + NULL + ); + 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 + ); + + DefineCustomBoolVariable( + "multimaster.monotonic_sequences", + "Enforce monotinic behaviour of sequence values obtained from different nodes", + NULL, + &MtmMonotonicSequences, + false, PGC_BACKEND, 0, NULL, @@ -2848,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, @@ -2866,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, @@ -2874,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 @@ -2892,7 +3072,7 @@ _PG_init(void) &MtmVolksWagenMode, false, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2907,7 +3087,7 @@ _PG_init(void) 1, INT_MAX, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2937,7 +3117,7 @@ _PG_init(void) 1, INT_MAX, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2948,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 @@ -2961,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 @@ -2980,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 @@ -2995,7 +3175,7 @@ _PG_init(void) NULL, &MtmArbiterPort, MULTIMASTER_DEFAULT_ARBITER_PORT, - 0, + 0, INT_MAX, PGC_BACKEND, 0, @@ -3011,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", @@ -3024,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", @@ -3045,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(); @@ -3110,6 +3278,9 @@ _PG_init(void) PreviousProcessUtilityHook = ProcessUtility_hook; ProcessUtility_hook = MtmProcessUtility; + + PreviousSeqNextvalHook = SeqNextvalHook; + SeqNextvalHook = MtmSeqNextvalHook; } /* @@ -3120,45 +3291,24 @@ _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. - */ -void MtmReceiverStarted(int nodeId) -{ - MtmLock(LW_EXCLUSIVE); - if (!BIT_CHECK(Mtm->pglogicalReceiverMask, nodeId-1)) { - BIT_SET(Mtm->pglogicalReceiverMask, 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(); -} - -/* * 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 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. */ @@ -3167,29 +3317,32 @@ 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 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))) - { + 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); } -} +} /* - * Wrapper arround FinishPreparedTransaction function. - * This function shoudl proper context for invocation of this function. + * 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. + * `ts` object is pinned to prevent deallocation while lock is released. */ void MtmFinishPreparedTransaction(MtmTransState* ts, bool commit) { @@ -3201,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. */ @@ -3236,116 +3391,134 @@ 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) */ - if (Mtm->nAllNodes >= 3) { - elog(WARNING, "Process %d starts recovery from node %d restartLSNs={%llx, %llx, %llx}", - MyProcPid, nodeId, Mtm->nodes[0].restartLSN, Mtm->nodes[1].restartLSN, Mtm->nodes[2].restartLSN); - } else { - elog(WARNING, "Process %d starts recovery from node %d", MyProcPid, nodeId); - } - Mtm->recoverySlot = nodeId; - Mtm->nReceivers = 0; - Mtm->nSenders = 0; - Mtm->recoveryCount += 1; - Mtm->pglogicalReceiverMask = 0; - Mtm->pglogicalSenderMask = 0; - MtmPollStatusOfPreparedTransactions(); - 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 functions create logical replication slot for the node which will collect all changes which should be sent to this node from this moment. + * 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->nAllNodes) - { - elog(ERROR, "NodeID %d is out of range [1,%d]", nodeId, Mtm->nAllNodes); + 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_SET(Mtm->stoppedNodeMask, nodeId-1)) + 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, 0); + MtmBroadcastUtilityStmt(psprintf("select mtm.recover_node(%d)", nodeId), true, 0); + } +} + +/* + * 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 pg_create_logical_replication_slot('" MULTIMASTER_SLOT_PATTERN "', '" MULTIMASTER_NAME "')", nodeId), true); - MtmBroadcastUtilityStmt(psprintf("select mtm.recover_node(%d)", nodeId), true); + MtmBroadcastUtilityStmt(psprintf("select mtm.resume_node(%d)", nodeId), true, nodeId); } } - + /* - * Permantently exclude node from the cluster. Node will not participate in voting and can not be automantically recovered - * until MtmRecoverNode is invoked + * 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) - { - elog(ERROR, "NodeID %d is out of range [1,%d]", nodeId, Mtm->nAllNodes); + if (nodeId <= 0 || nodeId > Mtm->nAllNodes) + { + MTM_ELOG(ERROR, "NodeID %d is out of range [1,%d]", nodeId, Mtm->nAllNodes); } - MtmLock(LW_EXCLUSIVE); + 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)) { MtmDisableNode(nodeId); - MtmCheckQuorum(); - } + } MtmUnlock(); - if (!MtmIsBroadcast()) - { - MtmBroadcastUtilityStmt(psprintf("select mtm.stop_node(%d,%s)", nodeId, dropSlot ? "true" : "false"), true); - } - if (dropSlot) + if (dropSlot) { MtmDropSlot(nodeId); } @@ -3354,14 +3527,14 @@ void MtmStopNode(int nodeId, bool dropSlot) 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; @@ -3373,83 +3546,78 @@ MtmReplicationStartupHook(struct PGLogicalStartupHookArgs* args) 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), "%llx", &recoveryStartPos); - } else { - elog(ERROR, "Restart position is not specified"); + } 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) { 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("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); + // 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 (BIT_CHECK(Mtm->stoppedNodeMask, MtmReplicationNodeId-1)) { - elog(WARNING, "Stopped node %d tries to initiate recovery", MtmReplicationNodeId); - do { - MtmUnlock(); - MtmSleep(STATUS_POLL_DELAY); - MtmLock(LW_EXCLUSIVE); - } while (BIT_CHECK(Mtm->stoppedNodeMask, MtmReplicationNodeId-1)); + + if (BIT_CHECK(Mtm->stalledNodeMask, MtmReplicationNodeId-1)) { + MtmUnlock(); + MTM_ELOG(ERROR, "Stalled node %d tries to initiate recovery", MtmReplicationNodeId); } - if (MtmIsRecoverySession) { + + 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 %llx is beyond restart lsn %llx", recoveryStartPos, (long64)MyReplicationSlot->data.restart_lsn); + 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); } - if (!BIT_CHECK(Mtm->disabledNodeMask, MtmReplicationNodeId-1)) { - MtmDisableNode(MtmReplicationNodeId); - MtmCheckQuorum(); - } - } 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 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); - } - } else { - MTM_LOG1("Node %d start logical replication to node %d in normal mode", MtmNodeId, MtmReplicationNodeId); - } - if (!BIT_CHECK(Mtm->pglogicalSenderMask, MtmReplicationNodeId-1)) { - elog(LOG, "Start %d senders and %d receivers from %d cluster status %s", Mtm->nSenders+1, Mtm->nReceivers, Mtm->nLiveNodes-1, MtmNodeStatusMnem[Mtm->status]); - BIT_SET(Mtm->pglogicalSenderMask, MtmReplicationNodeId-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); + 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); + // 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); @@ -3462,9 +3630,9 @@ lsn_t MtmGetFlushPosition(int nodeId) /** * 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 @@ -3491,12 +3659,12 @@ void MtmUpdateLsnMapping(int node_id, lsn_t 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; } } @@ -3505,39 +3673,39 @@ void MtmUpdateLsnMapping(int node_id, lsn_t end_lsn) } -static void +static void MtmReplicationShutdownHook(struct PGLogicalShutdownHookArgs* args) { MtmLock(LW_EXCLUSIVE); - if (MtmReplicationNodeId >= 0 && BIT_CHECK(Mtm->pglogicalSenderMask, MtmReplicationNodeId-1)) { + 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); + MTM_LOG1("Logical replication to node %d is stopped", MtmReplicationNodeId); /* MtmOnNodeDisconnect(MtmReplicationNodeId); */ 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; @@ -3546,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; } @@ -3566,28 +3734,28 @@ 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. + * 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 event; - lsn_t origin_lsn; - lsn_t end_lsn; - lsn_t 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); @@ -3599,7 +3767,7 @@ bool MtmFilterTransaction(char* record, int size) 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); @@ -3607,12 +3775,12 @@ bool MtmFilterTransaction(char* record, int size) if (!(origin_node != 0 && (Mtm->status == MTM_RECOVERY || origin_node == replication_node))) { - elog(WARNING, "Receive redirected commit event %d from node %d origin node %d origin LSN %llx in %s mode", + 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 (event) - { + switch (event) + { case PGLOGICAL_PREPARE: case PGLOGICAL_PRECOMMIT_PREPARED: case PGLOGICAL_ABORT_PREPARED: @@ -3626,20 +3794,21 @@ 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) { - Assert(Mtm->nodes[origin_node-1].restartLSN == INVALID_LSN - || restart_lsn < Mtm->nodes[origin_node-1].restartLSN + MtmMaxRecoveryLag); + 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); - Mtm->nodes[origin_node-1].restartLSN = restart_lsn; - } else { + 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 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", + 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 %llx, event=%x, origin node %d, original lsn=%llx, current lsn=%llx", + 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); } @@ -3655,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); @@ -3670,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) { + 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 = 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); } } - + /* * ------------------------------------------- @@ -3699,16 +3868,16 @@ 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 @@ -3717,7 +3886,7 @@ mtm_stop_node(PG_FUNCTION_ARGS) int nodeId = PG_GETARG_INT32(0); bool dropSlot = PG_GETARG_BOOL(1); MtmStopNode(nodeId, dropSlot); - PG_RETURN_VOID(); + PG_RETURN_VOID(); } Datum @@ -3725,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); @@ -3759,9 +3929,9 @@ mtm_add_node(PG_FUNCTION_ARGS) MtmStartReceiver(nodeId+1, true); } - PG_RETURN_VOID(); + PG_RETURN_VOID(); } - + Datum mtm_poll_node(PG_FUNCTION_ARGS) { @@ -3769,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) { @@ -3814,65 +3992,78 @@ mtm_get_csn(PG_FUNCTION_ARGS) 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(SELF_CONNECTIVITY_MASK, 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[13] = Int64GetDatum(Mtm->nodes[usrfctx->nodeId-1].connectivityMask); - usrfctx->values[14] = BoolGetDatum(BIT_CHECK(Mtm->stalledNodeMask, usrfctx->nodeId-1)); - usrfctx->values[15] = BoolGetDatum(BIT_CHECK(Mtm->stoppedNodeMask, usrfctx->nodeId-1)); + 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))); @@ -3882,8 +4073,8 @@ Datum mtm_get_trans_by_gid(PG_FUNCTION_ARGS) { TupleDesc desc; - Datum values[Natts_mtm_trans_state]; - bool nulls[Natts_mtm_trans_state] = {false}; + 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)); @@ -3899,18 +4090,18 @@ mtm_get_trans_by_gid(PG_FUNCTION_ARGS) values[1] = CStringGetTextDatum(gid); ts = tm->state; - if (ts == NULL) { + if (ts == NULL) { values[0] = CStringGetTextDatum(MtmTxnStatusMnem[tm->status]); - for (i = 2; i < Natts_mtm_trans_state; i++) { + for (i = 2; i < Natts_mtm_trans_state; i++) { nulls[i] = true; } - } else { - values[0] = CStringGetTextDatum(MtmTxnStatusMnem[ts->status]); + } 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[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); @@ -3925,13 +4116,13 @@ mtm_get_trans_by_gid(PG_FUNCTION_ARGS) 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}; + Datum values[Natts_mtm_trans_state]; + bool nulls[Natts_mtm_trans_state] = {false}; TransactionId xid = PG_GETARG_INT64(0); MtmTransState* ts; @@ -3942,13 +4133,13 @@ mtm_get_trans_by_xid(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } - values[0] = CStringGetTextDatum(MtmTxnStatusMnem[ts->status]); - values[1] = CStringGetTextDatum(ts->gid); + 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[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); @@ -3961,33 +4152,36 @@ mtm_get_trans_by_xid(PG_FUNCTION_ARGS) 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(SELF_CONNECTIVITY_MASK); - 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] = Int64GetDatum(Mtm->oldestXid); - values[15] = Int32GetDatum(Mtm->nConfigChanges); - values[16] = Int64GetDatum(Mtm->stalledNodeMask); - values[17] = Int64GetDatum(Mtm->stoppedNodeMask); + 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))); } @@ -3995,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) @@ -4012,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()"); + + 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); + 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; @@ -4086,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); @@ -4137,7 +4388,7 @@ 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:%llu -> ", src->node, (long64)src->xid); while (gtid->node != 0) { @@ -4155,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(); } /* @@ -4177,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 */ @@ -4189,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); @@ -4200,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; @@ -4234,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; @@ -4283,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); } } @@ -4332,43 +4583,39 @@ MtmGenerateGid(char* gid) */ 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 (%llu) is left in prepared state because coordinator node is not online", x->gid, (long64)x->xid); - } 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 %s (%llu) is aborted by DTM", x->gid, (long64)x->xid); + 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()); } } } @@ -4397,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; @@ -4410,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() @@ -4427,7 +4687,7 @@ static void MtmGucDiscard() dlist_init(&MtmGucList); hash_destroy(MtmGucHash); - MtmGucInit(); + MtmGucHash = NULL; } static inline void MtmGucUpdate(const char *key, char *value) @@ -4435,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) { @@ -4450,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) { @@ -4501,7 +4767,10 @@ char* MtmGucSerialize(void) { StringInfo serialized_gucs; dlist_iter iter; - int nvars = 0; + const char *search_path; + + if (!MtmGucHash) + MtmGucInit(); serialized_gucs = makeStringInfo(); @@ -4509,12 +4778,15 @@ char* MtmGucSerialize(void) { 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); @@ -4525,9 +4797,15 @@ 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; } @@ -4539,20 +4817,23 @@ char* MtmGucSerialize(void) static void MtmProcessDDLCommand(char const* queryString, bool transactional) { - char* gucCtx = MtmGucSerialize(); - if (*gucCtx) { - queryString = psprintf("RESET SESSION AUTHORIZATION; reset all; %s; %s", gucCtx, queryString); - } else { - queryString = psprintf("RESET SESSION AUTHORIZATION; reset all; %s", queryString); - } - MTM_LOG3("Sending utility: %s", queryString); - if (transactional) { + if (MtmTx.isReplicated) + return; + + if (transactional) + { + char *gucCtx = MtmGucSerialize(); + queryString = psprintf("RESET SESSION AUTHORIZATION; reset all; %s %s", gucCtx, queryString); + /* Transactional DDL */ + MTM_LOG3("Sending DDL: %s", queryString); LogLogicalMessage("D", queryString, strlen(queryString) + 1, true); MtmTx.containsDML = true; - } else { - MTM_LOG1("Execute concurrent DDL: %s", queryString); + } + else + { /* Concurrent DDL */ + MTM_LOG1("Sending concurrent DDL: %s", queryString); XLogFlush(LogLogicalMessage("C", queryString, strlen(queryString) + 1, false)); } } @@ -4567,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); @@ -4578,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; @@ -4621,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: @@ -4634,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); - 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 */ { @@ -4692,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: @@ -4743,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); 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); @@ -4767,6 +5129,11 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString, } break; + case T_TruncateStmt: + skipCommand = false; + MtmLockCluster(); + break; + case T_DropStmt: { DropStmt *stmt = (DropStmt *) parsetree; @@ -4784,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); @@ -4803,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); - else - MtmProcessDDLCommand(ActivePortal->sourceText, true); - + 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) { @@ -4841,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; } @@ -4855,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); - if (PreviousExecutorStartHook != NULL) PreviousExecutorStartHook(queryDesc, eflags); else @@ -4896,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; } @@ -4918,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); + } +} /* * ------------------------------------------- @@ -4939,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; } /* @@ -4966,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; } @@ -4976,78 +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 */ - - 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)); - } + 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 */ - } - } + ByteBufferAppend(buf, >id, sizeof(gtid)); /* end of lock owners list */ + } + } } -static bool +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)); 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); @@ -5058,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:%llu = %d", MyProcPid, gtid.node, (long64)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 { + } 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 %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_INT64(0); - PG_RETURN_BOOL(MtmDetectGlobalDeadLockForXid(xid)); + 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 5530ce8999..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 + +// #define MTM_TXFINISH 1 + +#ifndef MTM_TXFINISH +#define TXFINISH(fmt, ...) +#else +#define TXFINISH(fmt, ...) elog(LOG, MTM_TAG "[TXFINISH] " fmt, ## __VA_ARGS__) #endif -#if MTM_TRACE == 0 -#define MTM_TXTRACE(tx, event) +// #define MTM_TRACE 1 + +#ifndef MTM_TRACE +#define MTM_TXTRACE(tx, event, ...) #else -#define MTM_TXTRACE(tx, event) \ - fprintf(stderr, "[MTM_TXTRACE], %s, %lld, %s, %d\n", tx->gid, (long long)MtmGetSystemTime(), event, MyProcPid) +#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_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 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) @@ -81,8 +91,8 @@ #define Anum_mtm_local_tables_rel_name 2 #define Natts_mtm_trans_state 15 -#define Natts_mtm_nodes_state 16 -#define Natts_mtm_cluster_state 18 +#define Natts_mtm_nodes_state 17 +#define Natts_mtm_cluster_state 21 typedef ulong64 csn_t; /* commit serial number */ #define INVALID_CSN ((csn_t)-1) @@ -93,9 +103,10 @@ typedef ulong64 lsn_t; 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, @@ -104,16 +115,16 @@ typedef enum } PGLOGICAL_EVENT; /* 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; @@ -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; @@ -201,6 +213,13 @@ typedef struct } MtmConnectionInfo; +typedef struct +{ + Oid sourceTable; + nodemask_t targetNodes; +} MtmCopyRequest; + + typedef struct { MtmConnectionInfo con; @@ -214,37 +233,50 @@ typedef struct int senderPid; int receiverPid; lsn_t flushPos; - csn_t oldestSnapshot; /* Oldest snapshot used by active transactions at this node */ + 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; @@ -263,43 +295,51 @@ 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 stalledNodeMask; /* bitmask of stalled nodes (node with dropped relication slot which makes it not possible automatic recovery of such node) */ + 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 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 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 */ - ulong64 transCount; /* Counter of transactions perfromed by this node */ + 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 */ 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 @@ -311,6 +351,12 @@ typedef struct MtmFlushPosition } MtmFlushPosition; +typedef struct MtmSeqPosition +{ + Oid seqid; + int64 next; +} MtmSeqPosition; + #define MtmIsCoordinator(ts) (ts->gtid.node == MtmNodeId) extern char const* const MtmNodeStatusMnem[]; @@ -326,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; @@ -339,19 +384,23 @@ extern HTAB* MtmGid2State; extern VacuumStmt* MtmVacuumStmt; extern IndexStmt* MtmIndexStmt; extern DropStmt* MtmDropStmt; +extern void* MtmTablespaceStmt; /* CREATE/DELETE tablespace */ extern MemoryContext MtmApplyContext; 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); @@ -360,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 MtmStopNode(int nodeId, bool dropSlot); -extern void MtmReconnectNode(int nodeId); 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); @@ -377,15 +426,11 @@ extern TransactionId MtmGetCurrentTransactionId(void); extern XidStatus MtmGetCurrentTransactionStatus(void); extern XidStatus MtmExchangeGlobalTransactionStatus(char const* gid, XidStatus status); extern bool MtmIsRecoveredNode(int nodeId); -extern void MtmRefreshClusterStatus(void); -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, lsn_t walEndPtr); extern void MtmCheckRecoveryCaughtUp(int nodeId, lsn_t slotLSN); -extern void MtmRecoveryCompleted(void); -extern void MtmMakeTableLocal(char* schema, char* name); +extern void MtmMakeTableLocal(char const* schema, char const* name); extern void MtmHandleApplyError(void); extern void MtmUpdateLsnMapping(int nodeId, lsn_t endLsn); extern lsn_t MtmGetFlushPosition(int nodeId); @@ -394,7 +439,7 @@ 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); @@ -402,4 +447,13 @@ 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 c69404b55e..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,6 @@ 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 */ /* @@ -154,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; } } @@ -253,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); @@ -305,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 */ @@ -337,25 +341,21 @@ 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=%lld", 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 %llu from disabled node %d", (long64)gtid.xid, gtid.node); - return false; - } -#endif + SetCurrentStatementStartTimestamp(); StartTransactionCommand(); - MtmJoinTransaction(>id, snapshot); + MtmJoinTransaction(>id, snapshot, participantsMask); if (GucAltered) { SPI_connect(); @@ -363,7 +363,7 @@ process_remote_begin(StringInfo s) rc = SPI_execute("RESET SESSION AUTHORIZATION; reset all;", false, 0); SPI_finish(); if (rc < 0) { - elog(ERROR, "Failed to set reset context: %d", rc); + MTM_ELOG(ERROR, "Failed to set reset context: %d", rc); } } @@ -399,17 +399,19 @@ process_remote_message(StringInfo s) 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, @@ -417,8 +419,6 @@ process_remote_message(StringInfo s) /* Run parse analysis ... */ MtmIndexStmt = transformIndexStmt(relid, MtmIndexStmt, messageBody); - MemoryContextSwitchTo(oldContext); - DefineIndex(relid, /* OID of heap relation */ MtmIndexStmt, InvalidOid, /* no predefined OID */ @@ -427,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(); } @@ -471,8 +487,15 @@ process_remote_message(StringInfo s) standalone = true; break; } - - } + case 'S': + { + Assert(messageSize == sizeof(csn_t)); + MtmSetSnapshot(*(csn_t*)messageBody); + break; + } + default: + Assert(false); + } return standalone; } @@ -487,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)); @@ -495,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 */ @@ -559,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 */ @@ -578,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) { @@ -594,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) { @@ -606,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; @@ -621,16 +656,20 @@ process_remote_commit(StringInfo in) { uint8 event; csn_t csn; - const char *gid = NULL; lsn_t end_lsn; lsn_t origin_lsn; + lsn_t commit_lsn; int origin_node; + 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 */ @@ -645,8 +684,8 @@ process_remote_commit(StringInfo in) 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); @@ -654,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); @@ -666,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(); @@ -687,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); } @@ -697,23 +738,36 @@ 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=%lld, gid=%s, lsn=%llx", 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); @@ -756,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 */ @@ -805,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(); @@ -819,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(); } @@ -846,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); @@ -866,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 */ @@ -882,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; } @@ -916,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 @@ -931,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"))); } @@ -940,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); @@ -971,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; } @@ -980,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 @@ -1008,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); @@ -1030,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", @@ -1042,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) { @@ -1058,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 ')': { @@ -1107,42 +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': { - MtmRecoveryCompleted(); + 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 %llu", MyProcPid, (long64)MtmGetCurrentTransactionId()); MtmEndSession(MtmReplicationNodeId, false); AbortCurrentTransaction(); + 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 9eb0e58926..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() */ @@ -77,6 +79,26 @@ static void send_startup_message(LogicalDecodingContext *ctx, 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) @@ -165,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; @@ -211,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))); /* @@ -255,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))); } @@ -268,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) @@ -281,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 { @@ -293,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()))); } @@ -338,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 @@ -386,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) @@ -394,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? @@ -410,7 +432,7 @@ 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); } } @@ -420,9 +442,9 @@ pg_decode_caughtup(LogicalDecodingContext *ctx) PGLogicalOutputData* data = (PGLogicalOutputData*)ctx->output_plugin_private; if (data->api) { - OutputPluginPrepareWrite(ctx, true); + MtmOutputPluginPrepareWrite(ctx, true, true); data->api->write_caughtup(ctx->out, data, ctx->reader->EndRecPtr); - OutputPluginWrite(ctx, true); + MtmOutputPluginWrite(ctx, true, true); } } @@ -437,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); } } @@ -460,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"); @@ -534,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 @@ -557,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 32c0855ed1..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,7 +62,7 @@ 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, @@ -80,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); @@ -92,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); + } } /* @@ -119,32 +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=%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)) { @@ -153,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); @@ -167,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); @@ -205,13 +281,16 @@ pglogical_write_commit(StringInfo out, PGLogicalOutputData *data, 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 && (event != PGLOGICAL_ABORT_PREPARED || txn->origin_id != InvalidRepOriginId)) + if (!isRecovery && csn == INVALID_CSN) { if (event == PGLOGICAL_ABORT_PREPARED) { - MTM_LOG1("Skip ABORT_PREPARED for transaction %s to node %d", txn->gid, MtmReplicationNodeId); + MTM_LOG1("Skip ABORT_PREPARED for transaction %s to node %d origin %d", txn->gid, MtmReplicationNodeId, txn->origin_id); } Assert(MtmTransactionRecords == 0); return; @@ -446,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) { diff --git a/contrib/mmts/pglogical_proto.h b/contrib/mmts/pglogical_proto.h index f0e1062935..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); diff --git a/contrib/mmts/pglogical_receiver.c b/contrib/mmts/pglogical_receiver.c index 1e447ad75f..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) @@ -96,13 +99,13 @@ sendFeedback(PGconn *conn, int64 now, int 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 = INVALID_LSN; + 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; - lsn_t 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,38 +339,23 @@ 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 == INVALID_LSN) { - originStartPos = replorigin_get_progress(originId, false); - if (originStartPos == INVALID_LSN) { - /* - * 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() : INVALID_LSN; - MTM_LOG1("Start logical receiver at position %llx from node %d", originStartPos, nodeId); - } 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("Restart logical receiver at position %llx 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 %llx, mode %s, recovered lsn %llx", + 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\" '%llx', \"mtm_recovered_pos\" '%llx')", @@ -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,35 +406,35 @@ 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. */ @@ -429,19 +442,19 @@ pglogical_receiver_main(Datum main_arg) { 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("Receive message %c from node %d", stmt[0], nodeId); - if (buf.used >= MtmTransSpillThreshold*MB) { + if (buf.used + msg_len + 1 >= MtmTransSpillThreshold*MB) { if (spill_file < 0) { int file_id; spill_file = MtmCreateSpillFile(nodeId, &file_id); @@ -546,17 +553,17 @@ pglogical_receiver_main(Datum main_arg) 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); if (stmt[0] == 'M' && stmt[1] == 'C') { /* concurrent DDL should be executed by parallel workers */ - MtmExecute(stmt, rc - hdr_len); + MtmExecute(stmt, msg_len); } else { - MtmExecutor(stmt, rc - hdr_len); /* all other messages can be processed by receiver itself */ + MtmExecutor(stmt, msg_len); /* all other messages can be processed by receiver itself */ } - } else { - ByteBufferAppend(&buf, stmt, rc - hdr_len); + } 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); @@ -565,22 +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) { + if (stop - start > USECS_PER_SEC) { elog(WARNING, "Commit of prepared transaction takes %lld usec, flags=%x", stop - start, stmt[1]); } } else { - Assert(stmt[1] == PGLOGICAL_PREPARE || stmt[1] == PGLOGICAL_COMMIT); /* all other commits should be applied in place */ + /* 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); @@ -630,12 +639,11 @@ 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, INVALID_LSN); sendFeedback(conn, now, nodeId); } @@ -650,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; } @@ -669,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; } @@ -677,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; } @@ -688,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); } @@ -701,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); } @@ -722,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/reinit-mm.sh b/contrib/mmts/tests/reinit-mm.sh index aeb07b3c10..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/tmp_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 arbiter_port=$arbiter_port sslmode=disable" - raft_conn_str="$raft_conn_str${sep}${i}:localhost:$raft_port" 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 @@ -50,20 +53,16 @@ do 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 @@ -72,4 +71,4 @@ done sleep 10 psql regression < regress.sql -echo Done \ No newline at end of file +echo Done diff --git a/contrib/mmts/tests2/_test_recovery_up.py b/contrib/mmts/tests2/_test_recovery_up.py deleted file mode 100644 index 7b52994120..0000000000 --- a/contrib/mmts/tests2/_test_recovery_up.py +++ /dev/null @@ -1,152 +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_WARMING_TIME = 5 -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): - - time.sleep(TEST_WARMING_TIME) - - print('Simulate failure at ',datetime.datetime.utcnow()) - - failure.start() - - self.client.clean_aggregates() - time.sleep(TEST_DURATION) - aggs_failure = self.client.get_aggregates() - - failure.stop() - - print('Eliminate failure at ',datetime.datetime.utcnow()) - - self.client.clean_aggregates() - time.sleep(TEST_RECOVERY_TIME) - aggs = self.client.get_aggregates() - - return (aggs_failure, aggs) - - -class RecoveryTest(unittest.TestCase, TestHelper): - - @classmethod - def setUpClass(self): - 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() - - @classmethod - def tearDownClass(self): - print('tearDown') - self.client.stop() - - 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 ###') - - 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 ###') - - 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 ###') - - 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/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 7844a36c37..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,32 +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 = '%m: ' + log_line_prefix = '%m: ' + wal_writer_delay = 1ms + # log_statement = all - multimaster.workers = 4 - multimaster.max_workers = 16 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 = 100000 + 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 59bd189644..4a3f600ac2 100644 --- a/contrib/mmts/tests2/test_recovery.py +++ b/contrib/mmts/tests2/test_recovery.py @@ -16,6 +16,7 @@ TEST_DURATION = 10 TEST_RECOVERY_TIME = 30 TEST_SETUP_TIME = 20 +TEST_STOP_DELAY = 5 class TestHelper(object): @@ -31,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): @@ -66,7 +69,7 @@ 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', @@ -75,19 +78,28 @@ def setUpClass(self): # XXX: add normal wait here time.sleep(TEST_SETUP_TIME) - self.client = MtmClient([ + 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) @@ -121,7 +133,6 @@ def test_node_partition(self): self.assertCommits(aggs) self.assertIsolation(aggs) - def test_edge_partition(self): print('### test_edge_partition ###') @@ -158,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_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/pg_standby/pg_standby.c b/contrib/pg_standby/pg_standby.c index bfbb953428..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) diff --git a/contrib/pg_trgm/expected/pg_trgm.out b/contrib/pg_trgm/expected/pg_trgm.out index 6329d9a017..4e37a7ee10 100644 --- a/contrib/pg_trgm/expected/pg_trgm.out +++ b/contrib/pg_trgm/expected/pg_trgm.out @@ -3489,6 +3489,7 @@ 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) @@ -3590,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 @@ -3676,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; @@ -3770,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 @@ -3856,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 6cddda2115..389114a63e 100644 --- a/contrib/pg_trgm/sql/pg_trgm.sql +++ b/contrib/pg_trgm/sql/pg_trgm.sql @@ -47,6 +47,7 @@ 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) @@ -81,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) @@ -116,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_regexp.c b/contrib/pg_trgm/trgm_regexp.c index a2e4a61630..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) */ @@ -319,9 +320,12 @@ typedef struct * enterKeys - enter keys reachable from this state without reading any * predictable trigram (List of TrgmStateKey) * 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 + * tentFlags - flags this state would acquire via planned merges * tentParent - planned parent state, if considering a merge - * number - number of this state (used at the packaging stage) */ #define TSTATE_INIT 0x01 /* flag indicating this state is initial */ #define TSTATE_FIN 0x02 /* flag indicating this state is final */ @@ -332,9 +336,10 @@ typedef struct TrgmState List *arcs; List *enterKeys; int flags; + int snumber; struct TrgmState *parent; + int tentFlags; struct TrgmState *tentParent; - int number; } TrgmState; /* @@ -361,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. @@ -369,7 +374,7 @@ typedef struct typedef struct { ColorTrgm ctrgm; - int number; + int cnumber; int count; float4 penalty; bool expanded; @@ -403,6 +408,7 @@ typedef struct /* Expanded graph (stage 2) */ HTAB *states; TrgmState *initState; + int nstates; /* Workspace for stage 2 */ List *queue; @@ -918,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)); @@ -1387,9 +1394,11 @@ getState(TrgmNFA *trgmNFA, TrgmStateKey *key) state->arcs = NIL; state->enterKeys = NIL; state->flags = 0; + /* states are initially given negative numbers */ + state->snumber = -(++trgmNFA->nstates); state->parent = NULL; + state->tentFlags = 0; state->tentParent = NULL; - state->number = -1; 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. @@ -1585,26 +1606,44 @@ selectColorTrigrams(TrgmNFA *trgmNFA) 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) source = source->parent; while (target->parent) target = target->parent; +#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_flags = source->flags | source->tentFlags; while (source->tentParent) { source = source->tentParent; - source_flags |= source->flags; + source_flags |= source->flags | source->tentFlags; } - target_flags = target->flags; + target_flags = target->flags | target->tentFlags; while (target->tentParent) { target = target->tentParent; - target_flags |= target->flags; + 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)) @@ -1615,29 +1654,62 @@ selectColorTrigrams(TrgmNFA *trgmNFA) /* 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 clear all the tentParent fields before continuing */ + /* + * 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 *target = arcInfo->target; + 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) @@ -1652,6 +1724,10 @@ selectColorTrigrams(TrgmNFA *trgmNFA) 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)) != @@ -1675,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++; } } @@ -1854,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; @@ -1874,16 +1950,16 @@ packGraph(TrgmNFA *trgmNFA, MemoryContext rcontext) while (state->parent) state = state->parent; - if (state->number < 0) + if (state->snumber < 0) { if (state->flags & TSTATE_INIT) - state->number = 0; + state->snumber = 0; else if (state->flags & TSTATE_FIN) - state->number = 1; + state->snumber = 1; else { - state->number = number; - number++; + state->snumber = snumber; + snumber++; } } } @@ -1909,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; @@ -1921,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++; } } @@ -1969,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; @@ -2141,7 +2217,7 @@ printTrgmNFA(TrgmNFA *trgmNFA) { ListCell *cell; - appendStringInfo(&buf, "s%p", (void *) state); + appendStringInfo(&buf, "s%d", -state->snumber); if (state->flags & TSTATE_FIN) appendStringInfoString(&buf, " [shape = doublecircle]"); if (state->flags & TSTATE_INIT) @@ -2153,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]); @@ -2167,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/postgres_fdw/connection.c b/contrib/postgres_fdw/connection.c index 2b28b8c40b..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; - /* Sleep until there's something to do */ - wc = WaitLatchOrSocket(MyLatch, - WL_LATCH_SET | WL_SOCKET_READABLE, - PQsocket(conn), - -1L); - ResetLatch(MyLatch); + while (PQisBusy(conn)) + { + int wc; - CHECK_FOR_INTERRUPTS(); + /* Sleep until there's something to do */ + wc = WaitLatchOrSocket(MyLatch, + WL_LATCH_SET | WL_SOCKET_READABLE, + PQsocket(conn), + -1L); + ResetLatch(MyLatch); - /* Data available in socket */ - if (wc & WL_SOCKET_READABLE) - { - if (!PQconsumeInput(conn)) - pgfdw_report_error(ERROR, NULL, conn, false, query); + CHECK_FOR_INTERRUPTS(); + + /* 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; } @@ -808,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; @@ -840,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 @@ -869,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; @@ -879,40 +985,35 @@ 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: @@ -933,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) @@ -954,6 +1055,7 @@ pgfdw_xact_callback(XactEvent event, void *arg) cursor_number = 0; currentGlobalTransactionId = 0; + currentConnection = NULL; } } @@ -985,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]; /* @@ -1001,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; @@ -1017,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 9a1c68f61d..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) @@ -4586,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 b09244a0cb..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) @@ -811,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 4f1db6bbce..1919e9a307 100644 --- a/contrib/postgres_fdw/tests/dtmbench.cpp +++ b/contrib/postgres_fdw/tests/dtmbench.cpp @@ -53,6 +53,8 @@ struct config int nShards; string connection; bool prepared; + bool local; + bool pathman_sharding; config() { nShards = 1; @@ -62,6 +64,8 @@ struct config nAccounts = 10000; updatePercent = 100; prepared = false; + local = false; + pathman_sharding = false; } }; @@ -125,14 +129,17 @@ 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) { int rc = cfg.prepared @@ -180,8 +187,17 @@ void initializeDatabase() for (int i = 0; i < cfg.nShards; i++) { 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); + + 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(); } } @@ -221,9 +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" @@ -234,7 +256,9 @@ int main (int argc, char* argv[]) "\t-p N\tupdate percent (100)\n" "\t-c STR\tdatabase connection string\n" "\t-i N\tinitialize N shards\n" - "\t-P\tuse prepared statements\n"); + "\t-l\ttlocal tranfers\n" + "\t-P\tuse prepared statements\n" + "\t-S\tuse pathman_sharding\n"); return 1; } @@ -282,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, \"prepared\":%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, @@ -295,7 +320,9 @@ int main (int argc, char* argv[]) cfg.nAccounts, cfg.nIterations, cfg.nShards, - cfg.prepared); + cfg.prepared, + cfg.pathman_sharding, + cfg.local); return 0; } 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/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/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/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 e45f4acd95..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.2): PostgreSQL 9.6.2 + 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 03c0dbf1cd..fd696c38db 100644 --- a/doc/src/sgml/backup.sgml +++ b/doc/src/sgml/backup.sgml @@ -889,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. @@ -908,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 @@ -924,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. + + @@ -932,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. @@ -992,6 +1002,11 @@ SELECT pg_start_backup('label', true); 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/catalogs.sgml b/doc/src/sgml/catalogs.sgml index 93deda4db9..d0518dc8a4 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -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 fc15b33ba4..ce5a05a779 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -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. @@ -5160,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 464ce83d30..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. 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/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 cb9ab34dbf..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. 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 3b51e480f7..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 diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index e4102cdd17..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 @@ -6277,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) @@ -6289,7 +6289,7 @@ SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); , (comma) - group (thousand) separator + group (thousands) separator PR @@ -6347,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 @@ -6354,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.) @@ -6412,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. @@ -6432,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 @@ -6480,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' @@ -15306,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 @@ -15429,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 @@ -15450,6 +15488,10 @@ SELECT * FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n); current_query + + current_role + + current_schema @@ -15501,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.) @@ -18023,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 a1960299c0..774d2b4bce 100644 --- a/doc/src/sgml/high-availability.sgml +++ b/doc/src/sgml/high-availability.sgml @@ -1783,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 9322a627e3..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. @@ -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 7483731053..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: @@ -2011,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 @@ -2187,7 +2188,7 @@ kill `cat /usr/local/pgsql/data/postmaster.pid` should take care of it. - + One user reports: @@ -2249,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/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 bc0c989f22..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. 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/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/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/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 5cc6dbce11..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. 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_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/create_role.sgml b/doc/src/sgml/ref/create_role.sgml index 2ae576ede6..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, 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/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/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 bbb606d1ca..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 @@ -317,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. @@ -410,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. @@ -439,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. @@ -448,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. @@ -465,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. @@ -485,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. @@ -520,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 0c846e1452..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. 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/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 bea0dc7bde..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. @@ -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 f4f98564b8..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. @@ -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 eb2d6ac278..e1b1f3aab2 100644 --- a/doc/src/sgml/release-9.1.sgml +++ b/doc/src/sgml/release-9.1.sgml @@ -4,10 +4,10 @@ Release 9.1.24 - - Release Date - 2016-10-27 - + + Release date: + 2016-10-27 + This release contains a variety of fixes from 9.1.23. @@ -214,10 +214,10 @@ 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. @@ -556,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. @@ -721,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. @@ -927,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. @@ -1440,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. @@ -2001,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. @@ -2069,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. @@ -2157,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. @@ -2683,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. @@ -3493,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. @@ -3876,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. @@ -4043,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. @@ -4593,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. @@ -4850,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. @@ -5185,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. @@ -5519,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. @@ -5841,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. @@ -6304,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. @@ -6556,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. @@ -6943,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. @@ -7433,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. @@ -8070,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. @@ -8717,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. @@ -8785,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 0c7fe30bda..8118649554 100644 --- a/doc/src/sgml/release-9.2.sgml +++ b/doc/src/sgml/release-9.2.sgml @@ -1,13 +1,998 @@ + + 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 - + + Release date: + 2017-02-09 + This release contains a variety of fixes from 9.2.19. @@ -416,10 +1401,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 Release 9.2.19 - - Release Date - 2016-10-27 - + + Release date: + 2016-10-27 + This release contains a variety of fixes from 9.2.18. @@ -682,10 +1667,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 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. @@ -1023,10 +2008,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 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. @@ -1219,10 +2204,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 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. @@ -1425,10 +2410,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 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. @@ -1969,10 +2954,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 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. @@ -2566,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. @@ -2634,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. @@ -2729,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. @@ -3311,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. @@ -4228,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. @@ -4709,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. @@ -4898,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. @@ -5505,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. @@ -5842,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. @@ -6261,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. @@ -6668,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. @@ -7119,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. @@ -7843,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. @@ -8011,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 6e1f010187..9eaf5d54db 100644 --- a/doc/src/sgml/release-9.3.sgml +++ b/doc/src/sgml/release-9.3.sgml @@ -1,13 +1,1132 @@ + + 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 - + + Release date: + 2017-02-09 + This release contains a variety of fixes from 9.3.15. @@ -452,10 +1571,10 @@ Release 9.3.15 - - Release Date - 2016-10-27 - + + Release date: + 2016-10-27 + This release contains a variety of fixes from 9.3.14. @@ -781,10 +1900,10 @@ 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. @@ -1271,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. @@ -1501,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. @@ -1720,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. @@ -2343,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. @@ -2972,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. @@ -3121,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. @@ -3229,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. @@ -3819,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. @@ -5704,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. @@ -6824,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. @@ -7286,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. @@ -8748,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. @@ -9227,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. @@ -9330,10 +10449,10 @@ ALTER EXTENSION hstore UPDATE; Release 9.3 - - Release Date - 2013-09-09 - + + Release date: + 2013-09-09 + Overview diff --git a/doc/src/sgml/release-9.4.sgml b/doc/src/sgml/release-9.4.sgml index d02d2aaff5..1c5c25d2b3 100644 --- a/doc/src/sgml/release-9.4.sgml +++ b/doc/src/sgml/release-9.4.sgml @@ -1,13 +1,1351 @@ + + 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 - + + Release date: + 2017-02-09 + This release contains a variety of fixes from 9.4.10. @@ -537,10 +1875,10 @@ Release 9.4.10 - - Release Date - 2016-10-27 - + + Release date: + 2016-10-27 + This release contains a variety of fixes from 9.4.9. @@ -1003,10 +2341,10 @@ Branch: REL9_4_STABLE [10ad15f48] 2016-09-01 11:45:16 -0400 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. @@ -1525,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. @@ -1788,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. @@ -2059,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. @@ -3156,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. @@ -4679,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. @@ -4860,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. @@ -5003,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. @@ -6284,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. @@ -7097,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 @@ -8828,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) diff --git a/doc/src/sgml/release-9.5.sgml b/doc/src/sgml/release-9.5.sgml index aab3ddc3c1..b7f522deb9 100644 --- a/doc/src/sgml/release-9.5.sgml +++ b/doc/src/sgml/release-9.5.sgml @@ -1,13 +1,1436 @@ + + 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 - + + Release date: + 2017-02-09 + This release contains a variety of fixes from 9.5.5. @@ -666,10 +2089,10 @@ Branch: REL9_2_STABLE [60314e28e] 2016-12-13 19:08:09 -0600 Release 9.5.5 - - Release Date - 2016-10-27 - + + Release date: + 2016-10-27 + This release contains a variety of fixes from 9.5.4. @@ -1490,10 +2913,10 @@ Branch: REL9_1_STABLE [380dad29d] 2016-09-02 17:29:32 -0400 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. @@ -2563,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. @@ -3064,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. @@ -3775,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. @@ -4223,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 ac404ff3b1..f5e4869fec 100644 --- a/doc/src/sgml/release-9.6.sgml +++ b/doc/src/sgml/release-9.6.sgml @@ -1,13 +1,2595 @@ + + 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 - + + Release date: + 2017-02-09 + This release contains a variety of fixes from 9.6.1. @@ -1421,10 +4003,10 @@ Branch: REL9_2_STABLE [ef878cc2c] 2017-01-30 11:41:09 -0500 Release 9.6.1 - - Release Date - 2016-10-27 - + + Release date: + 2016-10-27 + This release contains a variety of fixes from 9.6.0. @@ -2016,10 +4598,10 @@ Branch: REL9_1_STABLE [22cf97635] 2016-10-19 17:57:06 -0400 Release 9.6 - - Release Date - 2016-09-29 - + + Release date: + 2016-09-29 + Overview @@ -5004,7 +7586,7 @@ This commit is also listed under libpq and PL/pgSQL --> Allow the number of client connections ( @@ -5765,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 573b40bea6..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 @@ -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 @@ -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/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/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/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/src/Makefile.global.in b/src/Makefile.global.in index 62fc921b80..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 diff --git a/src/backend/access/brin/brin_pageops.c b/src/backend/access/brin/brin_pageops.c index 4878f8b776..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 */ } @@ -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/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/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/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 300b075af7..674b1bd2e6 100644 --- a/src/backend/access/heap/rewriteheap.c +++ b/src/backend/access/heap/rewriteheap.c @@ -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/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/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/parallel.c b/src/backend/access/transam/parallel.c index d2bed72705..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,16 +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 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) @@ -163,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, @@ -179,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); @@ -248,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); @@ -367,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); @@ -377,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); } } @@ -669,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); } @@ -939,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; @@ -1038,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); @@ -1101,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(); @@ -1119,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. @@ -1161,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/twophase.c b/src/backend/access/transam/twophase.c index 4eb05c2f31..f7de5f2ce5 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -2132,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 bceb90cdc0..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); @@ -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(); } /* diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 184ea2d4b9..68109e2541 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -3811,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 @@ -3941,7 +3941,7 @@ CleanupBackupHistory(void) { DIR *xldir; struct dirent *xlde; - char path[MAXPGPATH]; + char path[MAXPGPATH + sizeof(XLOGDIR)]; xldir = AllocateDir(XLOGDIR); if (xldir == NULL) @@ -3959,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); } @@ -3972,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. @@ -8006,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 @@ -10061,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; 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/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 8ccc171d03..68ba35248c 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -1578,8 +1578,8 @@ get_object_address_opf_member(ObjectType objtype, ObjectAddress address; ListCell *cell; List *copy; - TypeName *typenames[2]; - Oid typeoids[2]; + TypeName *typenames[2] = { NULL, NULL }; + Oid typeoids[2] = { InvalidOid, InvalidOid }; int membernum; int i; 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 bbeb8fb655..819a77f035 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -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/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/copy.c b/src/backend/commands/copy.c index db6ef78314..feab7aa6e2 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -1491,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 @@ -1802,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/extension.c b/src/backend/commands/extension.c index 33b0de0a76..4b923c205e 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -706,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, diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index b886fed70e..837d76b557 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -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); } diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 608b0b19c4..13d1102340 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -4473,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?) @@ -4492,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); @@ -4518,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; @@ -4575,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); } @@ -6903,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); @@ -8916,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; 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/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 e1e39dfb4e..8f59732442 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -523,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 @@ -633,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; @@ -1342,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", @@ -1418,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)))); } /* @@ -1607,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)))); } /* @@ -1817,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/executor/execMain.c b/src/backend/executor/execMain.c index d406ee9783..9bc255ea0c 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -1828,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 96e2ac06b8..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; /* @@ -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/libpq/auth.c b/src/backend/libpq/auth.c index f585ae0aed..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) { @@ -2509,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/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/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 f8d43dbf99..05bce204f3 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -2505,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) { @@ -3733,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/path/costsize.c b/src/backend/optimizer/path/costsize.c index 3b5576694e..fa9b322610 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -4095,7 +4095,6 @@ get_foreign_key_join_selectivity(PlannerInfo *root, { ForeignKeyOptInfo *fkinfo = (ForeignKeyOptInfo *) lfirst(lc); bool ref_is_outer; - bool use_smallest_selectivity = false; List *removedlist; ListCell *cell; ListCell *prev; @@ -4114,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 @@ -4214,10 +4229,7 @@ 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 use_smallest_selectivity code below, null derating is done - * implicitly by relying on clause_selectivity(); in the other cases, + * 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 @@ -4230,52 +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. */ - use_smallest_selectivity = true; - } - 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. The referenced table - * is on the inner side (we already handled the other case above), - * so the FK implies that every LHS row has a match *in the - * referenced table*. But any restriction or join clauses below - * here will reduce the number of matches. - */ - if (bms_membership(inner_relids) == BMS_SINGLETON) - { - /* - * When the inner side of the semi/anti join is just the - * referenced table, we may take the FK selectivity as equal - * to the selectivity of the table's restriction clauses. - */ - RelOptInfo *ref_rel = find_base_rel(root, fkinfo->ref_relid); - double ref_tuples = Max(ref_rel->tuples, 1.0); + RelOptInfo *ref_rel = find_base_rel(root, fkinfo->ref_relid); + double ref_tuples = Max(ref_rel->tuples, 1.0); - fkselec *= ref_rel->rows / ref_tuples; - } - else - { - /* - * When the inner side of the semi/anti join is itself a join, - * it's hard to guess what fraction of the referenced table - * will get through the join. But we still don't want to - * multiply per-column estimates together. Take the smallest - * per-column selectivity, instead. - */ - use_smallest_selectivity = true; - } + fkselec *= ref_rel->rows / ref_tuples; } else { @@ -4289,26 +4272,6 @@ get_foreign_key_join_selectivity(PlannerInfo *root, fkselec *= 1.0 / ref_tuples; } - - /* - * Common code for cases where we should use the smallest selectivity - * that would be computed for any one of the FK's clauses. - */ - if (use_smallest_selectivity) - { - Selectivity thisfksel = 1.0; - - foreach(cell, removedlist) - { - RestrictInfo *rinfo = (RestrictInfo *) lfirst(cell); - Selectivity csel; - - csel = clause_selectivity(root, (Node *) rinfo, - 0, jointype, sjinfo); - thisfksel = Min(thisfksel, csel); - } - fkselec *= thisfksel; - } } *restrictlist = worklist; 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 71678d08dc..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 @@ -6136,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 && @@ -6145,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/parser/gram.y b/src/backend/parser/gram.y index ab189a3df2..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); 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_utilcmd.c b/src/backend/parser/parse_utilcmd.c index e9e8ef3b44..e4dc508682 100644 --- a/src/backend/parser/parse_utilcmd.c +++ b/src/backend/parser/parse_utilcmd.c @@ -156,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 @@ -312,7 +313,7 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString) /* * Postprocess check constraints. */ - transformCheckConstraints(&cxt, true); + transformCheckConstraints(&cxt, !is_foreign_table ? true : false); /* * Output results. @@ -1935,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/po/de.po b/src/backend/po/de.po index 5ef5fc1455..ebaf875c91 100644 --- a/src/backend/po/de.po +++ b/src/backend/po/de.po @@ -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: 2017-02-06 10:08+0000\n" -"PO-Revision-Date: 2017-02-06 09:10-0500\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:2833 -#: commands/extension.c:3141 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: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 +#: 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" @@ -154,27 +154,27 @@ 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: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 +#: 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:1061 -#: storage/ipc/procarray.c:1547 storage/ipc/procarray.c:1554 -#: storage/ipc/procarray.c:1968 storage/ipc/procarray.c:2571 +#: 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/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/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:509 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 +#: 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 @@ -242,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:1744 +#: ../common/username.c:47 libpq/auth.c:1758 msgid "user does not exist" msgstr "Benutzer existiert nicht" @@ -292,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:4868 +#: postmaster/postmaster.c:4899 #, c-format msgid "Please report this to ." msgstr "Bitte berichten Sie das an ." @@ -380,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 @@ -451,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" @@ -547,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: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 +#: 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" @@ -588,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 -#, 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 +#: 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 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 @@ -684,45 +663,15 @@ 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:70 #, c-format @@ -755,55 +704,15 @@ 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" +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:217 +#: access/hash/hashvalidate.c:247 access/nbtree/nbtvalidate.c:241 #, 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" - -#: access/hash/hashvalidate.c:247 -#, 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:1756 @@ -812,8 +721,8 @@ 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:1763 commands/tablecmds.c:9081 -#: commands/tablecmds.c:12189 +#: 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" @@ -833,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" @@ -843,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:2314 +#: 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" @@ -861,10 +770,10 @@ 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:3087 -#: access/transam/xlog.c:3249 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 +#: 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" @@ -872,10 +781,10 @@ 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: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 +#: 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" @@ -886,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" @@ -894,11 +803,11 @@ 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: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 +#: 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 @@ -907,12 +816,12 @@ msgstr "konnte Positionszeiger nicht ans Ende der Datei »%s« setzen: %m" 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:10441 +#: 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: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 +#: 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" @@ -920,17 +829,17 @@ 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: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 +#: 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:658 replication/logical/reorderbuffer.c:2156 -#: replication/logical/reorderbuffer.c:2402 -#: replication/logical/reorderbuffer.c:3081 +#: 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:7105 #: utils/misc/guc.c:7138 @@ -949,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:242 -#: commands/tablecmds.c:12180 +#: 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" @@ -985,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:1702 +#: 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" @@ -1006,100 +915,20 @@ 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 @@ -1250,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«" @@ -1362,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:3093 access/transam/xlog.c:3254 -#: access/transam/xlogfuncs.c:690 commands/copy.c:1708 +#: 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" @@ -1454,7 +1283,7 @@ msgstr "konnte »stat« für Zweiphasen-Statusdatei »%s« nicht ausführen: %m" msgid "could not read two-phase state file \"%s\": %m" msgstr "konnte Zweiphasen-Statusdatei »%s« nicht lesen: %m" -#: access/transam/twophase.c:1263 access/transam/xlog.c:6109 +#: 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." @@ -1567,432 +1396,432 @@ 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:2299 +#: 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:2319 +#: 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:2582 +#: 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:3224 +#: 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:3365 +#: 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:3554 access/transam/xlog.c:5339 +#: 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:3611 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:3671 access/transam/xlog.c:3746 -#: access/transam/xlog.c:3944 +#: 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:3827 +#: access/transam/xlog.c:3833 #, c-format msgid "recycled transaction log file \"%s\"" msgstr "Transaktionslogdatei »%s« wird wiederverwendet" -#: access/transam/xlog.c:3839 +#: access/transam/xlog.c:3845 #, c-format msgid "removing transaction log file \"%s\"" msgstr "entferne Transaktionslogdatei »%s«" -#: access/transam/xlog.c:3859 +#: 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:3871 +#: 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:3904 access/transam/xlog.c:3914 +#: 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:3920 +#: access/transam/xlog.c:3926 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "erzeuge fehlendes WAL-Verzeichnis »%s«" -#: access/transam/xlog.c:3923 +#: 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:3954 +#: 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:4035 +#: 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:4157 +#: 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:4171 +#: 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:4190 +#: access/transam/xlog.c:4196 #, c-format msgid "new target timeline is %u" msgstr "neue Zielzeitleiste ist %u" -#: access/transam/xlog.c:4270 +#: 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:4281 access/transam/xlog.c:4517 +#: 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:4287 access/transam/xlog.c:4523 +#: 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:4292 access/transam/xlog.c:4528 +#: 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:4310 access/transam/xlog.c:4506 +#: 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:4316 +#: 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: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 +#: 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:4330 +#: 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:4334 +#: 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:4339 +#: 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:4342 access/transam/xlog.c:4366 -#: access/transam/xlog.c:4373 access/transam/xlog.c:4378 +#: 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:4353 +#: access/transam/xlog.c:4359 #, c-format msgid "incorrect checksum in control file" msgstr "falsche Prüfsumme in Kontrolldatei" -#: access/transam/xlog.c:4363 +#: 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:4370 +#: 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:4377 +#: 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:4382 +#: 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: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 +#: 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:4389 +#: 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:4396 +#: 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:4403 +#: 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:4410 +#: 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:4417 +#: 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:4424 +#: 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:4431 +#: 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:4440 +#: 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:4447 +#: 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:4456 +#: 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:4463 +#: 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:4472 +#: 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:4479 +#: 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:4900 +#: 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:4906 +#: 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:4911 +#: 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:4986 +#: 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:5032 access/transam/xlog.c:5117 +#: 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:5035 +#: 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:5055 +#: 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:5072 +#: 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:5103 +#: 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:5120 +#: 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:5133 access/transam/xlog.c:5144 +#: 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:5179 +#: access/transam/xlog.c:5185 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "Parameter »%s« erfordert einen Zeitwert" -#: access/transam/xlog.c:5181 catalog/dependency.c:990 +#: 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:9542 commands/user.c:1045 commands/view.c:499 -#: libpq/auth.c:307 replication/syncrep.c:919 storage/lmgr/deadlock.c:1139 +#: 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 @@ -2000,691 +1829,691 @@ msgstr "Parameter »%s« erfordert einen Zeitwert" msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5188 +#: access/transam/xlog.c:5194 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "unbekannter Recovery-Parameter »%s«" -#: access/transam/xlog.c:5199 +#: 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:5201 +#: 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:5208 +#: 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:5229 +#: 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:5248 +#: 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:5369 +#: access/transam/xlog.c:5375 #, c-format msgid "archive recovery complete" msgstr "Wiederherstellung aus Archiv abgeschlossen" -#: access/transam/xlog.c:5428 access/transam/xlog.c:5656 +#: 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:5516 +#: 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:5523 +#: 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:5568 +#: 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:5636 +#: 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:5644 +#: 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:5683 +#: access/transam/xlog.c:5689 #, c-format msgid "recovery has paused" msgstr "Wiederherstellung wurde pausiert" -#: access/transam/xlog.c:5684 +#: 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:5891 +#: 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:5917 +#: 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:5918 +#: 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:5929 +#: 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:5930 +#: 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:5987 +#: access/transam/xlog.c:5993 #, c-format msgid "control file contains invalid data" msgstr "Kontrolldatei enthält ungültige Daten" -#: access/transam/xlog.c:5993 +#: 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:5998 +#: 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:6002 +#: 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:6006 +#: 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:6008 +#: 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:6012 +#: 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:6014 +#: 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:6018 +#: 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:6074 +#: access/transam/xlog.c:6080 #, c-format msgid "entering standby mode" msgstr "Standby-Modus eingeschaltet" -#: access/transam/xlog.c:6077 +#: 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:6081 +#: 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:6085 +#: 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:6089 +#: 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:6092 +#: access/transam/xlog.c:6098 #, c-format msgid "starting archive recovery" msgstr "starte Wiederherstellung aus Archiv" -#: access/transam/xlog.c:6136 access/transam/xlog.c:6264 +#: 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:6150 +#: 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:6151 access/transam/xlog.c:6158 +#: 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:6157 +#: 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:6183 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:6215 access/transam/xlog.c:6221 +#: 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:6217 access/transam/xlog.c:11032 +#: 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:6223 +#: 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:6274 access/transam/xlog.c:6289 +#: 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:6283 +#: 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:6327 +#: 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:6329 +#: 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:6345 +#: 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:6376 +#: access/transam/xlog.c:6382 #, c-format msgid "invalid next transaction ID" msgstr "ungültige nächste Transaktions-ID" -#: access/transam/xlog.c:6459 +#: access/transam/xlog.c:6465 #, c-format msgid "invalid redo in checkpoint record" msgstr "ungültiges Redo im Checkpoint-Datensatz" -#: access/transam/xlog.c:6470 +#: 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:6498 +#: 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:6502 +#: 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:6546 +#: 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:6547 +#: 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:6621 +#: access/transam/xlog.c:6627 #, c-format msgid "initializing for hot standby" msgstr "initialisiere für Hot Standby" -#: access/transam/xlog.c:6753 +#: access/transam/xlog.c:6759 #, c-format msgid "redo starts at %X/%X" msgstr "Redo beginnt bei %X/%X" -#: access/transam/xlog.c:6978 +#: 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:7016 +#: access/transam/xlog.c:7022 #, c-format msgid "redo done at %X/%X" msgstr "Redo fertig bei %X/%X" -#: access/transam/xlog.c:7021 access/transam/xlog.c:8969 +#: 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:7030 +#: access/transam/xlog.c:7036 #, c-format msgid "redo is not required" msgstr "Redo nicht nötig" -#: access/transam/xlog.c:7105 access/transam/xlog.c:7109 +#: 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:7106 +#: 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:7110 +#: 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:7113 +#: 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:7140 +#: access/transam/xlog.c:7146 #, c-format msgid "selected new timeline ID: %u" msgstr "gewählte neue Zeitleisten-ID: %u" -#: access/transam/xlog.c:7551 +#: 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:7742 +#: 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:7746 +#: 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:7750 +#: 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:7767 +#: access/transam/xlog.c:7773 #, c-format msgid "invalid primary checkpoint record" msgstr "ungültiger primärer Checkpoint-Datensatz" -#: access/transam/xlog.c:7771 +#: access/transam/xlog.c:7777 #, c-format msgid "invalid secondary checkpoint record" msgstr "ungültiger sekundärer Checkpoint-Datensatz" -#: access/transam/xlog.c:7775 +#: access/transam/xlog.c:7781 #, c-format msgid "invalid checkpoint record" msgstr "ungültiger Checkpoint-Datensatz" -#: access/transam/xlog.c:7786 +#: 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:7790 +#: 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:7794 +#: 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:7806 +#: 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:7810 +#: 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:7814 +#: 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:7825 +#: 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:7829 +#: 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:7833 +#: 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:8001 +#: access/transam/xlog.c:8007 #, c-format msgid "shutting down" msgstr "fahre herunter" -#: access/transam/xlog.c:8514 +#: 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:8768 +#: 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:8791 +#: 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:8967 +#: 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:9100 +#: 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:9230 +#: 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:9239 +#: 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:9255 +#: 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:9326 +#: 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:9382 access/transam/xlog.c:9429 -#: access/transam/xlog.c:9452 +#: 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:9727 +#: 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:9751 +#: 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:9759 +#: 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:9768 +#: 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: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 +#: 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:9868 access/transam/xlog.c:10372 +#: 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:9869 access/transam/xlog.c:10373 -#: 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:9874 +#: 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:9911 access/transam/xlog.c:10183 -#: access/transam/xlog.c:10221 +#: 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:9912 +#: 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:10007 +#: 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:10009 access/transam/xlog.c:10554 +#: 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:10076 replication/basebackup.c:1026 +#: 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:10083 replication/basebackup.c:1031 +#: 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:10136 commands/tablespace.c:391 +#: 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: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 +#: 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: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 +#: 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:10184 access/transam/xlog.c:10222 +#: 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:10201 access/transam/xlog.c:10239 -#: access/transam/xlog.c:10615 +#: 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:10388 +#: access/transam/xlog.c:10418 #, c-format msgid "exclusive backup not in progress" msgstr "es läuft kein exklusives Backup" -#: access/transam/xlog.c:10415 +#: access/transam/xlog.c:10445 #, c-format msgid "a backup is not in progress" msgstr "es läuft kein Backup" -#: 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 +#: 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:10506 replication/basebackup.c:938 +#: 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:10507 replication/basebackup.c:939 +#: 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:10552 +#: 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:10664 +#: 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:10674 +#: 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:10676 +#: 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:10683 +#: 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:10687 +#: 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:10972 +#: 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:11021 +#: access/transam/xlog.c:11054 #, c-format msgid "online backup mode was not canceled" msgstr "Online-Sicherungsmodus wurde nicht storniert" -#: access/transam/xlog.c:11022 +#: 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:11031 access/transam/xlog.c:11043 -#: access/transam/xlog.c:11053 +#: 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:11044 +#: 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:11054 +#: 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:11176 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:11188 +#: 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:11662 +#: access/transam/xlog.c:11695 #, c-format msgid "received promote request" msgstr "Anforderung zum Befördern empfangen" -#: access/transam/xlog.c:11675 +#: access/transam/xlog.c:11708 #, c-format msgid "trigger file found: %s" msgstr "Triggerdatei gefunden: %s" -#: access/transam/xlog.c:11684 +#: 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" @@ -2713,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:1298 +#: 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" @@ -2729,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 +#: 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:2292 -#: storage/file/fd.c:2891 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 +#: 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:1729 -#: commands/extension.c:1838 commands/extension.c:2031 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: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:2763 +#: 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 +#: 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:1733 -#: commands/extension.c:1842 commands/extension.c:2035 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 +#: 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 +#: 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." @@ -2964,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" @@ -3108,24 +2937,24 @@ msgid "large object %u does not exist" msgstr "Large Object %u existiert nicht" #: 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/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:1219 -#: commands/extension.c:1227 commands/extension.c:1235 -#: commands/extension.c:1243 commands/extension.c:2761 +#: 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 @@ -3149,21 +2978,21 @@ msgid "default privileges cannot be set for columns" msgstr "Vorgabeprivilegien können nicht für Spalten gesetzt werden" #: 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 +#: 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:1984 +#: 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:1771 catalog/objectaddress.c:1203 commands/sequence.c:1078 -#: commands/tablecmds.c:224 commands/tablecmds.c:12154 utils/adt/acl.c:2076 +#: 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 @@ -3210,7 +3039,7 @@ msgstr "für Array-Typen können keine Privilegien gesetzt werden" msgid "Set the privileges of the element type instead." msgstr "Setzen Sie stattdessen die Privilegien des Elementtyps." -#: catalog/aclchk.c:3137 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" @@ -3610,12 +3439,12 @@ msgid "System catalog modifications are currently disallowed." msgstr "Änderungen an Systemkatalogen sind gegenwärtig nicht erlaubt." #: catalog/heap.c:415 commands/tablecmds.c:1439 commands/tablecmds.c:1896 -#: commands/tablecmds.c:4820 +#: 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:432 commands/tablecmds.c:5081 +#: 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" @@ -3651,11 +3480,11 @@ 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:586 commands/createas.c:204 commands/createas.c:501 -#: commands/indexcmds.c:1132 commands/view.c:103 regex/regc_pg_locale.c:262 +#: 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." @@ -3666,7 +3495,7 @@ msgstr "Verwenden Sie die COLLATE-Klausel, um die Sortierfolge explizit zu setze msgid "relation \"%s\" already exists" msgstr "Relation »%s« existiert bereits" -#: catalog/heap.c:1083 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 @@ -3688,7 +3517,7 @@ msgstr "Heap-OID-Wert für pg_class ist im Binary-Upgrade-Modus nicht gesetzt" msgid "check constraint \"%s\" already exists" msgstr "Check-Constraint »%s« existiert bereits" -#: catalog/heap.c:2456 catalog/pg_constraint.c:654 commands/tablecmds.c:6069 +#: 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«" @@ -3723,14 +3552,14 @@ msgstr "Spaltenverweise können nicht in Vorgabeausdrücken verwendet werden" msgid "default expression must not return a set" msgstr "Vorgabeausdruck kann keine Ergebnismenge zurückgeben" -#: catalog/heap.c:2625 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: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 +#: 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." @@ -3765,7 +3594,7 @@ msgstr "Tabelle »%s« verweist auf »%s«." 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:1473 parser/parse_utilcmd.c:1559 +#: 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" @@ -3791,7 +3620,7 @@ msgid "shared indexes cannot be created after initdb" msgstr "Cluster-globale Indexe können nicht nach initdb erzeugt werden" #: catalog/index.c:784 commands/createas.c:249 commands/sequence.c:141 -#: parser/parse_utilcmd.c:191 +#: parser/parse_utilcmd.c:192 #, c-format msgid "relation \"%s\" already exists, skipping" msgstr "Relation »%s« existiert bereits, wird übersprungen" @@ -3821,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 @@ -3854,13 +3677,13 @@ msgid "relation \"%s.%s\" does not exist" msgstr "Relation »%s.%s« existiert nicht" #: catalog/namespace.c:419 parser/parse_relation.c:1151 -#: parser/parse_relation.c:1159 utils/adt/regproc.c:1034 +#: 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:1383 -#: commands/extension.c:1389 +#: 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" @@ -3906,7 +3729,7 @@ msgstr "Textsuchekonfiguration »%s« existiert nicht" msgid "cross-database references are not implemented: %s" msgstr "Verweise auf andere Datenbanken sind nicht implementiert: %s" -#: catalog/namespace.c:2652 gram.y:13450 gram.y:14819 parser/parse_expr.c:799 +#: 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" @@ -3955,8 +3778,8 @@ 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:9875 @@ -3972,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:2507 +#: catalog/objectaddress.c:1071 commands/extension.c:2510 #, c-format msgid "extension name cannot be qualified" msgstr "Erweiterungsname kann nicht qualifiziert werden" @@ -4008,25 +3831,25 @@ 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:218 #: commands/tablecmds.c:1300 commands/tablecmds.c:4347 -#: commands/tablecmds.c:8017 +#: commands/tablecmds.c:8031 #, c-format msgid "\"%s\" is not a table" msgstr "»%s« ist keine Tabelle" #: catalog/objectaddress.c:1217 commands/tablecmds.c:230 -#: commands/tablecmds.c:4377 commands/tablecmds.c:12159 commands/view.c:141 +#: 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:236 commands/tablecmds.c:12164 +#: 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:254 -#: commands/tablecmds.c:4380 commands/tablecmds.c:12169 +#: commands/tablecmds.c:4380 commands/tablecmds.c:12183 #, c-format msgid "\"%s\" is not a foreign table" msgstr "»%s« ist keine Fremdtabelle" @@ -4042,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:246 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" @@ -4054,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:2302 +#: catalog/objectaddress.c:2306 #, c-format msgid "unrecognized object type \"%s\"" msgstr "unbekannter Objekttyp »%s«" -#: catalog/objectaddress.c:2497 +#: catalog/objectaddress.c:2501 #, c-format msgid " column %s" msgstr " Spalte %s" -#: catalog/objectaddress.c:2503 +#: catalog/objectaddress.c:2507 #, c-format msgid "function %s" msgstr "Funktion %s" -#: catalog/objectaddress.c:2508 +#: catalog/objectaddress.c:2512 #, c-format msgid "type %s" msgstr "Typ %s" -#: catalog/objectaddress.c:2538 +#: catalog/objectaddress.c:2542 #, c-format msgid "cast from %s to %s" msgstr "Typumwandlung von %s in %s" -#: catalog/objectaddress.c:2558 +#: catalog/objectaddress.c:2562 #, c-format msgid "collation %s" msgstr "Sortierfolge %s" -#: catalog/objectaddress.c:2582 +#: catalog/objectaddress.c:2586 #, c-format msgid "constraint %s on %s" msgstr "Constraint %s für %s" -#: catalog/objectaddress.c:2588 +#: catalog/objectaddress.c:2592 #, c-format msgid "constraint %s" msgstr "Constraint %s" -#: catalog/objectaddress.c:2605 +#: catalog/objectaddress.c:2609 #, c-format msgid "conversion %s" msgstr "Konversion %s" -#: catalog/objectaddress.c:2642 +#: catalog/objectaddress.c:2646 #, c-format msgid "default for %s" msgstr "Vorgabewert für %s" -#: catalog/objectaddress.c:2651 +#: catalog/objectaddress.c:2655 #, c-format msgid "language %s" msgstr "Sprache %s" -#: catalog/objectaddress.c:2656 +#: catalog/objectaddress.c:2660 #, c-format msgid "large object %u" msgstr "Large Object %u" -#: catalog/objectaddress.c:2661 +#: catalog/objectaddress.c:2665 #, c-format msgid "operator %s" msgstr "Operator %s" -#: catalog/objectaddress.c:2693 +#: catalog/objectaddress.c:2697 #, c-format msgid "operator class %s for access method %s" msgstr "Operatorklasse %s für Zugriffsmethode %s" @@ -4217,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:2743 +#: catalog/objectaddress.c:2747 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "Operator %d (%s, %s) von %s: %s" @@ -4226,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:2793 +#: 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:2833 +#: catalog/objectaddress.c:2837 #, c-format msgid "rule %s on " msgstr "Regel %s für " -#: catalog/objectaddress.c:2855 +#: catalog/objectaddress.c:2859 #, c-format msgid "transform for %s language %s" msgstr "Transformation %s für Sprache %s" -#: catalog/objectaddress.c:2889 +#: catalog/objectaddress.c:2893 #, c-format msgid "trigger %s on " msgstr "Trigger %s für " -#: catalog/objectaddress.c:2906 +#: catalog/objectaddress.c:2910 #, c-format msgid "schema %s" msgstr "Schema %s" -#: catalog/objectaddress.c:2919 +#: catalog/objectaddress.c:2923 #, c-format msgid "text search parser %s" msgstr "Textsucheparser %s" -#: catalog/objectaddress.c:2934 +#: catalog/objectaddress.c:2938 #, c-format msgid "text search dictionary %s" msgstr "Textsuchewörterbuch %s" -#: catalog/objectaddress.c:2949 +#: catalog/objectaddress.c:2953 #, c-format msgid "text search template %s" msgstr "Textsuchevorlage %s" -#: catalog/objectaddress.c:2964 +#: catalog/objectaddress.c:2968 #, c-format msgid "text search configuration %s" msgstr "Textsuchekonfiguration %s" -#: catalog/objectaddress.c:2972 +#: catalog/objectaddress.c:2976 #, c-format msgid "role %s" msgstr "Rolle %s" -#: catalog/objectaddress.c:2985 +#: catalog/objectaddress.c:2989 #, c-format msgid "database %s" msgstr "Datenbank %s" -#: catalog/objectaddress.c:2997 +#: catalog/objectaddress.c:3001 #, c-format msgid "tablespace %s" msgstr "Tablespace %s" -#: catalog/objectaddress.c:3006 +#: catalog/objectaddress.c:3010 #, c-format msgid "foreign-data wrapper %s" msgstr "Fremddaten-Wrapper %s" -#: catalog/objectaddress.c:3015 +#: catalog/objectaddress.c:3019 #, c-format msgid "server %s" msgstr "Server %s" -#: catalog/objectaddress.c:3043 +#: 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:3078 +#: 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:3083 +#: 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:3088 +#: 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:3093 +#: 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:3099 +#: catalog/objectaddress.c:3103 #, c-format msgid "default privileges belonging to role %s" msgstr "Vorgabeprivilegien von Rolle %s" -#: catalog/objectaddress.c:3107 +#: catalog/objectaddress.c:3111 #, c-format msgid " in schema %s" msgstr " in Schema %s" -#: catalog/objectaddress.c:3124 +#: catalog/objectaddress.c:3128 #, c-format msgid "extension %s" msgstr "Erweiterung %s" -#: catalog/objectaddress.c:3137 +#: catalog/objectaddress.c:3141 #, c-format msgid "event trigger %s" msgstr "Ereignistrigger %s" -#: catalog/objectaddress.c:3169 +#: catalog/objectaddress.c:3173 #, c-format msgid "policy %s on " msgstr "Policy %s für " -#: catalog/objectaddress.c:3187 +#: catalog/objectaddress.c:3191 #, c-format msgid "access method %s" msgstr "Zugriffsmethode %s" -#: catalog/objectaddress.c:3247 +#: catalog/objectaddress.c:3251 #, c-format msgid "table %s" msgstr "Tabelle %s" -#: catalog/objectaddress.c:3251 +#: catalog/objectaddress.c:3255 #, c-format msgid "index %s" msgstr "Index %s" -#: catalog/objectaddress.c:3255 +#: catalog/objectaddress.c:3259 #, c-format msgid "sequence %s" msgstr "Sequenz %s" -#: catalog/objectaddress.c:3259 +#: catalog/objectaddress.c:3263 #, c-format msgid "toast table %s" msgstr "TOAST-Tabelle %s" -#: catalog/objectaddress.c:3263 +#: catalog/objectaddress.c:3267 #, c-format msgid "view %s" msgstr "Sicht %s" -#: catalog/objectaddress.c:3267 +#: catalog/objectaddress.c:3271 #, c-format msgid "materialized view %s" msgstr "materialisierte Sicht %s" -#: catalog/objectaddress.c:3271 +#: catalog/objectaddress.c:3275 #, c-format msgid "composite type %s" msgstr "zusammengesetzter Typ %s" -#: catalog/objectaddress.c:3275 +#: catalog/objectaddress.c:3279 #, c-format msgid "foreign table %s" msgstr "Fremdtabelle %s" -#: catalog/objectaddress.c:3280 +#: catalog/objectaddress.c:3284 #, c-format msgid "relation %s" msgstr "Relation %s" -#: catalog/objectaddress.c:3317 +#: catalog/objectaddress.c:3321 #, c-format msgid "operator family %s for access method %s" msgstr "Operatorfamilie %s für Zugriffsmethode %s" @@ -4460,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 @@ -4573,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:3029 +#: 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«" @@ -4875,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:4359 -#: commands/tablecmds.c:12047 +#: commands/tablecmds.c:12061 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "»%s« ist keine Tabelle oder materialisierte Sicht" @@ -5051,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" @@ -5129,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 commands/tablecmds.c:8079 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" @@ -5183,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:9383 commands/tablecmds.c:11143 +#: 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" @@ -5198,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:11153 +#: 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«" @@ -5218,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" @@ -5281,7 +5104,7 @@ 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:753 +#: 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" @@ -5343,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" @@ -5383,445 +5206,445 @@ msgstr "COPY FROM wird nicht unterstützt mit Sicherheit auf Zeilenebene" msgid "Use INSERT statements instead." msgstr "Verwenden Sie stattdessen INSERT-Anweisungen." -#: commands/copy.c:1058 +#: commands/copy.c:1059 #, c-format msgid "COPY format \"%s\" not recognized" msgstr "COPY-Format »%s« nicht erkannt" -#: commands/copy.c:1129 commands/copy.c:1143 commands/copy.c:1157 -#: commands/copy.c:1177 +#: 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:1190 +#: 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:1196 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:1207 +#: 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:1212 +#: 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:1234 +#: 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:1241 +#: 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:1247 +#: 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:1264 +#: commands/copy.c:1265 #, c-format msgid "COPY delimiter cannot be \"%s\"" msgstr "DELIMITER für COPY darf nicht »%s« sein" -#: commands/copy.c:1270 +#: 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:1276 +#: 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:1281 +#: 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:1286 +#: 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:1292 +#: 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:1297 +#: 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:1303 +#: 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:1307 +#: 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:1313 +#: 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:1317 +#: 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:1323 +#: 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:1328 +#: 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:1334 +#: 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:1341 +#: 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:1402 +#: commands/copy.c:1403 #, c-format msgid "table \"%s\" does not have OIDs" msgstr "Tabelle »%s« hat keine OIDs" -#: commands/copy.c:1419 +#: 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:1439 +#: 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:1453 +#: 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:1457 +#: 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:1462 +#: 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:1472 +#: commands/copy.c:1473 #, c-format msgid "COPY (SELECT INTO) is not supported" msgstr "COPY (SELECT INTO) wird nicht unterstützt" -#: commands/copy.c:1489 +#: 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:1517 +#: 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:1575 +#: 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:1597 +#: 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:1619 +#: 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:1684 +#: 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:1688 +#: commands/copy.c:1689 #, c-format msgid "program \"%s\" failed" msgstr "Programm »%s« fehlgeschlagen" -#: commands/copy.c:1738 +#: commands/copy.c:1739 #, c-format msgid "cannot copy from view \"%s\"" msgstr "kann nicht aus Sicht »%s« kopieren" -#: commands/copy.c:1740 commands/copy.c:1746 commands/copy.c:1752 +#: 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:1744 +#: commands/copy.c:1745 #, c-format msgid "cannot copy from materialized view \"%s\"" msgstr "kann nicht aus materialisierter Sicht »%s« kopieren" -#: commands/copy.c:1750 +#: commands/copy.c:1751 #, c-format msgid "cannot copy from foreign table \"%s\"" msgstr "kann nicht aus Fremdtabelle »%s« kopieren" -#: commands/copy.c:1756 +#: commands/copy.c:1757 #, c-format msgid "cannot copy from sequence \"%s\"" msgstr "kann nicht aus Sequenz »%s« kopieren" -#: commands/copy.c:1761 +#: 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:1786 commands/copy.c:2822 +#: 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:1801 +#: 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:1809 +#: 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:1821 commands/copy.c:2845 +#: commands/copy.c:1822 commands/copy.c:2846 #, c-format msgid "\"%s\" is a directory" msgstr "»%s« ist ein Verzeichnis" -#: commands/copy.c:2144 +#: commands/copy.c:2145 #, c-format msgid "COPY %s, line %d, column %s" msgstr "COPY %s, Zeile %d, Spalte %s" -#: commands/copy.c:2148 commands/copy.c:2195 +#: commands/copy.c:2149 commands/copy.c:2196 #, c-format msgid "COPY %s, line %d" msgstr "COPY %s, Zeile %d" -#: commands/copy.c:2159 +#: 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:2167 +#: 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:2189 +#: commands/copy.c:2190 #, c-format msgid "COPY %s, line %d: \"%s\"" msgstr "COPY %s, Zeile %d: »%s«" -#: commands/copy.c:2273 +#: commands/copy.c:2274 #, c-format msgid "cannot copy to view \"%s\"" msgstr "kann nicht in Sicht »%s« kopieren" -#: commands/copy.c:2278 +#: commands/copy.c:2279 #, c-format msgid "cannot copy to materialized view \"%s\"" msgstr "kann nicht in materialisierte Sicht »%s« kopieren" -#: commands/copy.c:2283 +#: commands/copy.c:2284 #, c-format msgid "cannot copy to foreign table \"%s\"" msgstr "kann nicht in Fremdtabelle »%s« kopieren" -#: commands/copy.c:2288 +#: commands/copy.c:2289 #, c-format msgid "cannot copy to sequence \"%s\"" msgstr "kann nicht in Sequenz »%s« kopieren" -#: commands/copy.c:2293 +#: 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:2356 +#: 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:2362 +#: 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:2865 +#: commands/copy.c:2866 #, c-format msgid "COPY file signature not recognized" msgstr "COPY-Datei-Signatur nicht erkannt" -#: commands/copy.c:2870 +#: commands/copy.c:2871 #, c-format msgid "invalid COPY file header (missing flags)" msgstr "ungültiger COPY-Dateikopf (Flags fehlen)" -#: commands/copy.c:2876 +#: commands/copy.c:2877 #, c-format msgid "unrecognized critical flags in COPY file header" msgstr "unbekannte kritische Flags im COPY-Dateikopf" -#: commands/copy.c:2882 +#: commands/copy.c:2883 #, c-format msgid "invalid COPY file header (missing length)" msgstr "ungültiger COPY-Dateikopf (Länge fehlt)" -#: commands/copy.c:2889 +#: commands/copy.c:2890 #, c-format msgid "invalid COPY file header (wrong length)" msgstr "ungültiger COPY-Dateikopf (falsche Länge)" -#: commands/copy.c:3022 commands/copy.c:3729 commands/copy.c:3959 +#: 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:3032 +#: commands/copy.c:3033 #, c-format msgid "missing data for OID column" msgstr "fehlende Daten für OID-Spalte" -#: commands/copy.c:3038 +#: commands/copy.c:3039 #, c-format msgid "null OID in COPY data" msgstr "OID ist NULL in COPY-Daten" -#: commands/copy.c:3048 commands/copy.c:3171 +#: 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:3063 +#: commands/copy.c:3064 #, c-format msgid "missing data for column \"%s\"" msgstr "fehlende Daten für Spalte »%s«" -#: commands/copy.c:3146 +#: commands/copy.c:3147 #, c-format msgid "received copy data after EOF marker" msgstr "COPY-Daten nach EOF-Markierung empfangen" -#: commands/copy.c:3153 +#: 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:3493 commands/copy.c:3510 +#: 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:3494 commands/copy.c:3511 +#: 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:3496 commands/copy.c:3513 +#: 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:3497 commands/copy.c:3514 +#: 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:3526 +#: commands/copy.c:3527 #, c-format msgid "literal newline found in data" msgstr "Newline-Zeichen in Daten gefunden" -#: commands/copy.c:3527 +#: commands/copy.c:3528 #, c-format msgid "unquoted newline found in data" msgstr "ungequotetes Newline-Zeichen in Daten gefunden" -#: commands/copy.c:3529 +#: commands/copy.c:3530 #, c-format msgid "Use \"\\n\" to represent newline." msgstr "Verwenden Sie »\\n«, um ein Newline-Zeichen darzustellen." -#: commands/copy.c:3530 +#: 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:3576 commands/copy.c:3612 +#: 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:3585 commands/copy.c:3601 +#: 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:4043 +#: commands/copy.c:4044 #, c-format msgid "unterminated CSV quoted field" msgstr "Quotes in CSV-Feld nicht abgeschlossen" -#: commands/copy.c:4120 commands/copy.c:4139 +#: 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:4129 +#: commands/copy.c:4130 #, c-format msgid "invalid field size" msgstr "ungültige Feldgröße" -#: commands/copy.c:4152 +#: commands/copy.c:4153 #, c-format msgid "incorrect binary data format" msgstr "falsches Binärdatenformat" -#: commands/copy.c:4463 commands/indexcmds.c:1053 commands/tablecmds.c:1464 +#: 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:4470 commands/tablecmds.c:1490 commands/trigger.c:651 +#: 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" @@ -6095,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:2080 +#: utils/adt/ruleutils.c:2083 #, c-format msgid "\"%s\" is an aggregate function" msgstr "»%s« ist eine Aggregatfunktion" @@ -6107,7 +5930,7 @@ msgstr "Verwenden Sie DROP AGGREGATE, um Aggregatfunktionen zu löschen." #: 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 +#: commands/tablecmds.c:11538 tcop/utility.c:1119 #, c-format msgid "relation \"%s\" does not exist, skipping" msgstr "Relation »%s« existiert nicht, wird übersprungen" @@ -6319,7 +6142,7 @@ msgstr "EXPLAIN-Option BUFFERS erfordert ANALYZE" msgid "EXPLAIN option TIMING requires ANALYZE" msgstr "EXPLAIN-Option TIMING erfordert ANALYZE" -#: commands/extension.c:155 commands/extension.c:2719 +#: commands/extension.c:155 commands/extension.c:2722 #, c-format msgid "extension \"%s\" does not exist" msgstr "Erweiterung »%s« existiert nicht" @@ -6406,142 +6229,142 @@ msgstr "unbekannter Parameter »%s« in Datei »%s«" msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" msgstr "Parameter »schema« kann nicht angegeben werden, wenn »relocatable« an ist" -#: commands/extension.c:722 +#: 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:790 +#: commands/extension.c:793 #, c-format msgid "permission denied to create extension \"%s\"" msgstr "keine Berechtigung, um Erweiterung »%s« zu erzeugen" -#: commands/extension.c:792 +#: 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:796 +#: commands/extension.c:799 #, c-format msgid "permission denied to update extension \"%s\"" msgstr "keine Berechtigung, um Erweiterung »%s« zu aktualisieren" -#: commands/extension.c:798 +#: 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:1080 +#: 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:1262 commands/extension.c:2779 +#: 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:1279 +#: 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:1344 +#: 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:1436 +#: 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:1441 +#: commands/extension.c:1444 #, c-format msgid "installing required extension \"%s\"" msgstr "installiere benötigte Erweiterung »%s«" -#: commands/extension.c:1469 commands/extension.c:2924 +#: 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:1471 +#: 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:1535 +#: commands/extension.c:1538 #, c-format msgid "extension \"%s\" already exists, skipping" msgstr "Erweiterung »%s« existiert bereits, wird übersprungen" -#: commands/extension.c:1542 +#: commands/extension.c:1545 #, c-format msgid "extension \"%s\" already exists" msgstr "Erweiterung »%s« existiert bereits" -#: commands/extension.c:1553 +#: commands/extension.c:1556 #, c-format msgid "nested CREATE EXTENSION is not supported" msgstr "geschachteltes CREATE EXTENSION wird nicht unterstützt" -#: commands/extension.c:1681 +#: 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:2152 +#: 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:2164 +#: 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:2169 +#: 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:2534 +#: 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:2574 commands/extension.c:2637 +#: 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:2639 +#: 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:2699 +#: commands/extension.c:2702 #, c-format msgid "nested ALTER EXTENSION is not supported" msgstr "geschachteltes ALTER EXTENSION wird nicht unterstützt" -#: commands/extension.c:2790 +#: 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:3041 +#: 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:3069 +#: 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:3135 +#: commands/extension.c:3138 #, c-format msgid "file \"%s\" is too large" msgstr "Datei »%s« ist zu groß" @@ -6756,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." @@ -6787,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" @@ -6992,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:546 commands/tablecmds.c:9694 +#: 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:1881 +#: 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:2807 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" @@ -7364,8 +7187,8 @@ msgstr "Operator-Attribut »%s« kann nicht geändert werden" #: 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/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 @@ -7419,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" @@ -7429,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" @@ -7675,7 +7498,7 @@ msgstr "materialisierte Sicht »%s« existiert nicht, wird übersprungen" 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:240 parser/parse_utilcmd.c:1630 +#: commands/tablecmds.c:240 parser/parse_utilcmd.c:1631 #, c-format msgid "index \"%s\" does not exist" msgstr "Index »%s« existiert nicht" @@ -7698,8 +7521,8 @@ msgstr "»%s« ist kein Typ" msgid "Use DROP TYPE to remove a type." msgstr "Verwenden Sie DROP TYPE, um einen Typen zu löschen." -#: commands/tablecmds.c:252 commands/tablecmds.c:8583 -#: commands/tablecmds.c:11335 +#: 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" @@ -7743,22 +7566,22 @@ msgstr "Truncate-Vorgang leert ebenfalls Tabelle »%s«" msgid "cannot truncate temporary tables of other sessions" msgstr "kann temporäre Tabellen anderer Sitzungen nicht leeren" -#: commands/tablecmds.c:1529 parser/parse_utilcmd.c:1844 +#: 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:1536 commands/tablecmds.c:10150 +#: 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:1544 commands/tablecmds.c:10158 +#: 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:1560 commands/tablecmds.c:10192 +#: 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" @@ -7788,7 +7611,7 @@ msgid "inherited column \"%s\" has a collation conflict" msgstr "geerbte Spalte »%s« hat Sortierfolgenkonflikt" #: commands/tablecmds.c:1629 commands/tablecmds.c:1851 -#: commands/tablecmds.c:4767 +#: commands/tablecmds.c:4780 #, c-format msgid "\"%s\" versus \"%s\"" msgstr "»%s« gegen »%s«" @@ -7798,14 +7621,14 @@ msgstr "»%s« gegen »%s«" msgid "inherited column \"%s\" has a storage parameter conflict" msgstr "geerbte Spalte »%s« hat einen Konflikt bei einem Storage-Parameter" -#: commands/tablecmds.c:1752 commands/tablecmds.c:8088 -#: parser/parse_utilcmd.c:923 parser/parse_utilcmd.c:1274 -#: parser/parse_utilcmd.c:1350 +#: 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:1753 parser/parse_utilcmd.c:924 +#: 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«." @@ -7932,7 +7755,7 @@ msgstr "überprüfe Tabelle »%s«" msgid "column \"%s\" contains null values" msgstr "Spalte »%s« enthält NULL-Werte" -#: commands/tablecmds.c:4202 commands/tablecmds.c:7385 +#: 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" @@ -7973,7 +7796,7 @@ msgstr "»%s« ist keine Tabelle oder Fremdtabelle" msgid "\"%s\" is not a table, composite type, or foreign table" msgstr "»%s« ist weder Tabelle, Sicht, zusammengesetzter Typ noch Fremdtabelle" -#: commands/tablecmds.c:4374 commands/tablecmds.c:5426 +#: 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" @@ -7983,565 +7806,565 @@ msgstr "»%s« ist weder Tabelle, materialisierte Sicht, Index noch Fremdtabelle msgid "\"%s\" is of the wrong type" msgstr "»%s« hat den falschen Typ" -#: commands/tablecmds.c:4536 commands/tablecmds.c:4543 +#: 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:4550 +#: 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:4557 +#: 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:4619 +#: 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:4621 +#: 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:4665 +#: commands/tablecmds.c:4678 #, c-format msgid "type %s is not a composite type" msgstr "Typ %s ist kein zusammengesetzter Typ" -#: commands/tablecmds.c:4691 +#: 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:4759 commands/tablecmds.c:10351 +#: 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:4765 commands/tablecmds.c:10358 +#: 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:4775 +#: 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:4787 +#: 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:5014 +#: 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:5089 +#: 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:5096 +#: 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: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 +#: 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:5243 +#: 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:5458 +#: commands/tablecmds.c:5471 #, c-format msgid "statistics target %d is too low" msgstr "Statistikziel %d ist zu niedrig" -#: commands/tablecmds.c:5466 +#: commands/tablecmds.c:5479 #, c-format msgid "lowering statistics target to %d" msgstr "setze Statistikziel auf %d herab" -#: commands/tablecmds.c:5616 +#: commands/tablecmds.c:5629 #, c-format msgid "invalid storage type \"%s\"" msgstr "ungültiger Storage-Typ »%s«" -#: commands/tablecmds.c:5648 +#: 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:5686 +#: 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:5730 +#: 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:5743 +#: commands/tablecmds.c:5756 #, c-format msgid "cannot drop system column \"%s\"" msgstr "Systemspalte »%s« kann nicht gelöscht werden" -#: commands/tablecmds.c:5750 +#: commands/tablecmds.c:5763 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "geerbte Spalte »%s« kann nicht gelöscht werden" -#: commands/tablecmds.c:5990 +#: 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:6203 +#: 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:6274 +#: 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:6297 +#: 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:6304 +#: 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:6310 +#: 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:6314 +#: 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:6375 +#: 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:6482 +#: 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:6485 +#: 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:6692 commands/tablecmds.c:6860 -#: commands/tablecmds.c:7763 commands/tablecmds.c:7819 +#: 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:6698 +#: 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:6867 +#: 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:6935 +#: 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:7004 +#: 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:7009 +#: 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:7074 +#: 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:7091 +#: 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:7156 +#: 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:7250 +#: 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:7255 +#: 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:7418 +#: commands/tablecmds.c:7432 #, c-format msgid "validating foreign key constraint \"%s\"" msgstr "validiere Fremdschlüssel-Constraint »%s«" -#: commands/tablecmds.c:7717 +#: 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:7769 +#: 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:7908 +#: 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:7931 +#: commands/tablecmds.c:7945 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "kann vererbte Spalte »%s« nicht ändern" -#: commands/tablecmds.c:7980 +#: 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:7983 +#: 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:7987 +#: 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:7990 +#: 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:8089 +#: 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:8100 +#: 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:8187 +#: 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:8223 +#: 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:8349 +#: 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:8350 commands/tablecmds.c:8369 -#: commands/tablecmds.c:8387 +#: 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:8368 +#: 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:8386 +#: 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:9051 +#: 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:9053 +#: 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:9069 +#: 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:9071 commands/tablecmds.c:11543 +#: 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:9083 commands/tablecmds.c:12190 +#: commands/tablecmds.c:9097 commands/tablecmds.c:12204 #, c-format msgid "Use ALTER TYPE instead." msgstr "Verwenden Sie stattdessen ALTER TYPE." -#: commands/tablecmds.c:9092 +#: 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:9435 +#: commands/tablecmds.c:9449 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "mehrere SET TABLESPACE Unterbefehle sind ungültig" -#: commands/tablecmds.c:9508 +#: 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:9541 commands/view.c:498 +#: 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:9687 +#: commands/tablecmds.c:9701 #, c-format msgid "cannot move system relation \"%s\"" msgstr "Systemrelation »%s« kann nicht verschoben werden" -#: commands/tablecmds.c:9703 +#: 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:9840 +#: 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:9852 +#: 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:9943 +#: 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:9959 +#: 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:10033 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:10115 +#: 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:10165 +#: 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:10219 +#: commands/tablecmds.c:10233 #, c-format msgid "circular inheritance not allowed" msgstr "zirkuläre Vererbung ist nicht erlaubt" -#: commands/tablecmds.c:10220 +#: commands/tablecmds.c:10234 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "»%s« ist schon von »%s« abgeleitet." -#: commands/tablecmds.c:10228 +#: 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:10369 +#: 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:10385 commands/tablecmds.c:10418 +#: 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:10501 +#: 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:10509 +#: 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:10520 +#: 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:10544 +#: commands/tablecmds.c:10558 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "Constraint »%s« fehlt in abgeleiteter Tabelle" -#: commands/tablecmds.c:10628 +#: 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:10862 +#: commands/tablecmds.c:10876 #, c-format msgid "typed tables cannot inherit" msgstr "getypte Tabellen können nicht erben" -#: commands/tablecmds.c:10893 +#: commands/tablecmds.c:10907 #, c-format msgid "table is missing column \"%s\"" msgstr "Spalte »%s« fehlt in Tabelle" -#: commands/tablecmds.c:10903 +#: 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:10912 +#: 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:10925 +#: commands/tablecmds.c:10939 #, c-format msgid "table has extra column \"%s\"" msgstr "Tabelle hat zusätzliche Spalte »%s«" -#: commands/tablecmds.c:10977 +#: commands/tablecmds.c:10991 #, c-format msgid "\"%s\" is not a typed table" msgstr "»%s« ist keine getypte Tabelle" -#: commands/tablecmds.c:11161 +#: 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:11167 +#: 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:11173 +#: 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:11179 +#: 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:11185 +#: 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:11206 +#: 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:11213 +#: 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:11416 +#: 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:11475 +#: 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:11485 +#: 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:11542 +#: 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:11647 +#: 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:12174 +#: commands/tablecmds.c:12188 #, c-format msgid "\"%s\" is not a composite type" msgstr "»%s« ist kein zusammengesetzter Typ" -#: commands/tablecmds.c:12204 +#: 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" @@ -9177,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«" @@ -9242,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:13615 -#: gram.y:13650 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" @@ -9456,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" @@ -9551,17 +9379,17 @@ 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" @@ -9626,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" @@ -9658,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 @@ -9811,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." @@ -10235,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" @@ -10397,32 +10225,32 @@ 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:10295 gram.y:10303 +#: 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:314 utils/adt/ri_triggers.c:371 +#: 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 @@ -10433,249 +10261,249 @@ msgstr "die Verwendung von GLOBAL beim Erzeugen einer temporären Tabelle ist ve msgid "MATCH PARTIAL not yet implemented" msgstr "MATCH PARTIAL ist noch nicht implementiert" -#: gram.y:4809 +#: gram.y:4818 msgid "duplicate trigger events specified" msgstr "mehrere Trigger-Ereignisse angegeben" -#: gram.y:4902 parser/parse_utilcmd.c:2728 parser/parse_utilcmd.c:2754 +#: 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:4909 +#: gram.y:4918 #, c-format msgid "conflicting constraint properties" msgstr "widersprüchliche Constraint-Eigentschaften" -#: gram.y:5041 +#: gram.y:5050 #, c-format msgid "CREATE ASSERTION is not yet implemented" msgstr "CREATE ASSERTION ist noch nicht implementiert" -#: gram.y:5057 +#: gram.y:5066 #, c-format msgid "DROP ASSERTION is not yet implemented" msgstr "DROP ASSERTION ist noch nicht implementiert" -#: gram.y:5403 +#: gram.y:5412 #, c-format msgid "RECHECK is no longer required" msgstr "RECHECK wird nicht mehr benötigt" -#: gram.y:5404 +#: gram.y:5413 #, c-format msgid "Update your data type." msgstr "Aktualisieren Sie Ihren Datentyp." -#: gram.y:6983 +#: gram.y:6992 #, c-format msgid "aggregates cannot have output arguments" msgstr "Aggregatfunktionen können keine OUT-Argumente haben" -#: gram.y:7302 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:7303 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:8853 gram.y:8871 +#: 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:9389 +#: gram.y:9398 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "unbekannte VACUUM-Option »%s«" -#: gram.y:9887 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:10403 +#: gram.y:10412 #, c-format msgid "LIMIT #,# syntax is not supported" msgstr "Syntax LIMIT x,y wird nicht unterstützt" -#: gram.y:10404 +#: gram.y:10413 #, c-format msgid "Use separate LIMIT and OFFSET clauses." msgstr "Verwenden Sie die getrennten Klauseln LIMIT und OFFSET." -#: gram.y:10667 gram.y:10692 +#: 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:10668 gram.y:10693 +#: gram.y:10677 gram.y:10702 #, c-format msgid "For example, FROM (VALUES ...) [AS] foo." msgstr "Zum Beispiel FROM (VALUES ...) [AS] xyz." -#: gram.y:10673 gram.y:10698 +#: 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:10674 gram.y:10699 +#: gram.y:10683 gram.y:10708 #, c-format msgid "For example, FROM (SELECT ...) [AS] foo." msgstr "Zum Beispiel FROM (SELECT ...) [AS] xyz." -#: gram.y:11273 +#: 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:11282 +#: 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:11786 +#: 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:11791 +#: 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:11966 +#: gram.y:11975 #, c-format msgid "UNIQUE predicate is not yet implemented" msgstr "UNIQUE-Prädikat ist noch nicht implementiert" -#: gram.y:12296 +#: 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:12301 +#: gram.y:12314 #, c-format msgid "cannot use DISTINCT with WITHIN GROUP" msgstr "DISTINCT kann nicht mit WITHIN GROUP verwendet werden" -#: gram.y:12306 +#: gram.y:12319 #, c-format msgid "cannot use VARIADIC with WITHIN GROUP" msgstr "VARIADIC kann nicht mit WITHIN GROUP verwendet werden" -#: gram.y:12812 +#: gram.y:12825 #, c-format msgid "RANGE PRECEDING is only supported with UNBOUNDED" msgstr "RANGE PRECEDING wird nur mit UNBOUNDED unterstützt" -#: gram.y:12818 +#: gram.y:12831 #, c-format msgid "RANGE FOLLOWING is only supported with UNBOUNDED" msgstr "RANGE FOLLOWING wird nur mit UNBOUNDED unterstützt" -#: gram.y:12845 gram.y:12868 +#: 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:12850 +#: 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:12873 +#: gram.y:12886 #, c-format msgid "frame end cannot be UNBOUNDED PRECEDING" msgstr "Frame-Ende kann nicht UNBOUNDED PRECEDING sein" -#: gram.y:12879 +#: 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:12886 +#: 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:13551 +#: gram.y:13564 #, c-format msgid "type modifier cannot have parameter name" msgstr "Typmodifikator kann keinen Parameternamen haben" -#: gram.y:13557 +#: gram.y:13570 #, c-format msgid "type modifier cannot have ORDER BY" msgstr "Typmodifikator kann kein ORDER BY haben" -#: gram.y:13621 gram.y:13627 +#: 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:14249 gram.y:14438 +#: gram.y:14262 gram.y:14451 msgid "improper use of \"*\"" msgstr "unzulässige Verwendung von »*«" -#: gram.y:14401 gram.y:14418 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:14502 +#: 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:14539 +#: gram.y:14552 #, c-format msgid "multiple ORDER BY clauses not allowed" msgstr "mehrere ORDER-BY-Klauseln sind nicht erlaubt" -#: gram.y:14550 +#: gram.y:14563 #, c-format msgid "multiple OFFSET clauses not allowed" msgstr "mehrere OFFSET-Klauseln sind nicht erlaubt" -#: gram.y:14559 +#: gram.y:14572 #, c-format msgid "multiple LIMIT clauses not allowed" msgstr "mehrere LIMIT-Klauseln sind nicht erlaubt" -#: gram.y:14568 +#: gram.y:14581 #, c-format msgid "multiple WITH clauses not allowed" msgstr "mehrere WITH-Klauseln sind nicht erlaubt" -#: gram.y:14760 +#: 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:14861 +#: 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:14899 gram.y:14912 +#: 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:14925 +#: 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:14938 +#: gram.y:14951 #, c-format msgid "%s constraints cannot be marked NO INHERIT" msgstr "%s-Constraints können nicht als NO INHERIT markiert werden" @@ -10920,339 +10748,339 @@ msgstr "Passwort-Antwort erwartet, Message-Typ %d empfangen" msgid "invalid password packet size" msgstr "ungültige Größe des Passwortpakets" -#: libpq/auth.c:828 +#: 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:888 +#: 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:949 +#: libpq/auth.c:963 msgid "accepting GSS security context failed" msgstr "Annahme des GSS-Sicherheitskontexts fehlgeschlagen" -#: libpq/auth.c:975 +#: libpq/auth.c:989 msgid "retrieving GSS user name failed" msgstr "Abfrage des GSS-Benutzernamens fehlgeschlagen" -#: libpq/auth.c:1094 +#: 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:1109 +#: libpq/auth.c:1123 msgid "could not acquire SSPI credentials" msgstr "konnte SSPI-Credentials nicht erhalten" -#: libpq/auth.c:1127 +#: 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:1199 +#: libpq/auth.c:1213 msgid "could not accept SSPI security context" msgstr "konnte SSPI-Sicherheitskontext nicht akzeptieren" -#: libpq/auth.c:1261 +#: libpq/auth.c:1275 msgid "could not get token from SSPI security context" msgstr "konnte kein Token vom SSPI-Sicherheitskontext erhalten" -#: libpq/auth.c:1380 libpq/auth.c:1399 +#: libpq/auth.c:1394 libpq/auth.c:1413 #, c-format msgid "could not translate name" msgstr "konnte Namen nicht umwandeln" -#: libpq/auth.c:1412 +#: libpq/auth.c:1426 #, c-format msgid "realm name too long" msgstr "Realm-Name zu lang" -#: libpq/auth.c:1427 +#: libpq/auth.c:1441 #, c-format msgid "translated account name too long" msgstr "umgewandelter Account-Name zu lang" -#: libpq/auth.c:1613 +#: 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:1628 +#: 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:1640 +#: 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:1662 +#: 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:1679 +#: 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:1689 +#: 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:1729 +#: 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:1733 +#: libpq/auth.c:1747 #, c-format msgid "could not get peer credentials: %m" msgstr "konnte Credentials von Gegenstelle nicht ermitteln: %m" -#: libpq/auth.c:1742 +#: 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:1826 libpq/auth.c:2152 libpq/auth.c:2512 -#, c-format -msgid "empty password returned by client" -msgstr "Client gab leeres Passwort zurück" - -#: libpq/auth.c:1836 +#: libpq/auth.c:1844 #, c-format msgid "error from underlying PAM layer: %s" msgstr "Fehler von der unteren PAM-Ebene: %s" -#: libpq/auth.c:1917 +#: libpq/auth.c:1925 #, c-format msgid "could not create PAM authenticator: %s" msgstr "konnte PAM-Authenticator nicht erzeugen: %s" -#: libpq/auth.c:1928 +#: 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:1939 +#: 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:1950 +#: 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:1961 +#: libpq/auth.c:1969 #, c-format msgid "pam_authenticate failed: %s" msgstr "pam_authenticate fehlgeschlagen: %s" -#: libpq/auth.c:1972 +#: libpq/auth.c:1980 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "pam_acct_mgmt fehlgeschlagen: %s" -#: libpq/auth.c:1983 +#: libpq/auth.c:1991 #, c-format msgid "could not release PAM authenticator: %s" msgstr "konnte PAM-Authenticator nicht freigeben: %s" -#: libpq/auth.c:2048 +#: libpq/auth.c:2056 #, c-format msgid "could not initialize LDAP: %m" msgstr "konnte LDAP nicht initialisieren: %m" -#: libpq/auth.c:2051 +#: libpq/auth.c:2059 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "konnte LDAP nicht initialisieren: Fehlercode %d" -#: libpq/auth.c:2061 +#: libpq/auth.c:2069 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "konnte LDAP-Protokollversion nicht setzen: %s" -#: libpq/auth.c:2090 +#: libpq/auth.c:2098 #, c-format msgid "could not load wldap32.dll" msgstr "konnte wldap32.dll nicht laden" -#: libpq/auth.c:2098 +#: 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:2099 +#: 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:2114 +#: 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:2136 +#: libpq/auth.c:2144 #, c-format msgid "LDAP server not specified" msgstr "LDAP-Server nicht angegeben" -#: libpq/auth.c:2189 +#: 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:2204 +#: 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:2228 +#: 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:2239 +#: libpq/auth.c:2242 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "LDAP-Benutzer »%s« existiert nicht" -#: libpq/auth.c:2240 +#: 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:2244 +#: libpq/auth.c:2247 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "LDAP-Benutzer »%s« ist nicht eindeutig" -#: libpq/auth.c:2245 +#: 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:2263 +#: 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:2283 +#: 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:2313 +#: 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:2341 +#: 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:2468 +#: libpq/auth.c:2474 #, c-format msgid "RADIUS server not specified" msgstr "RADIUS-Server nicht angegeben" -#: libpq/auth.c:2475 +#: libpq/auth.c:2481 #, c-format msgid "RADIUS secret not specified" msgstr "RADIUS-Geheimnis nicht angegeben" -#: libpq/auth.c:2491 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:2519 +#: 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:2531 +#: libpq/auth.c:2530 #, c-format msgid "could not generate random encryption vector" msgstr "konnte zufälligen Verschlüsselungsvektor nicht erzeugen" -#: libpq/auth.c:2569 +#: 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:2594 +#: libpq/auth.c:2593 #, c-format msgid "could not create RADIUS socket: %m" msgstr "konnte RADIUS-Socket nicht erstellen: %m" -#: libpq/auth.c:2615 +#: 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:2625 +#: libpq/auth.c:2624 #, c-format msgid "could not send RADIUS packet: %m" msgstr "konnte RADIUS-Paket nicht senden: %m" -#: libpq/auth.c:2658 libpq/auth.c:2683 +#: 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:2676 +#: 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:2705 +#: libpq/auth.c:2704 #, c-format msgid "could not read RADIUS response: %m" msgstr "konnte RADIUS-Antwort nicht lesen: %m" -#: libpq/auth.c:2717 libpq/auth.c:2721 +#: 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:2730 +#: libpq/auth.c:2729 #, c-format msgid "RADIUS response too short: %d" msgstr "RADIUS-Antwort zu kurz: %d" -#: libpq/auth.c:2737 +#: 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:2745 +#: 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:2770 +#: 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:2779 +#: libpq/auth.c:2778 #, c-format msgid "RADIUS response has incorrect MD5 signature" msgstr "RADIUS-Antwort hat falsche MD5-Signatur" -#: libpq/auth.c:2796 +#: 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«" @@ -11265,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" @@ -11380,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" @@ -11480,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«." @@ -11802,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" @@ -12304,7 +12132,7 @@ msgid "could not implement GROUP BY" msgstr "konnte GROUP BY nicht implementieren" #: optimizer/plan/planner.c:3810 optimizer/plan/planner.c:4203 -#: optimizer/prep/prepunion.c:929 +#: 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." @@ -12339,18 +12167,18 @@ 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" @@ -13579,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" @@ -13834,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:384 +#: 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:432 +#: 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:526 parser/parse_utilcmd.c:538 +#: 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:550 +#: 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:567 parser/parse_utilcmd.c:658 +#: 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:576 parser/parse_utilcmd.c:668 +#: 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:593 parser/parse_utilcmd.c:692 +#: 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:678 +#: 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:742 +#: 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:1275 parser/parse_utilcmd.c:1351 +#: 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:1621 +#: 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:1641 +#: 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:1649 +#: 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:1656 +#: parser/parse_utilcmd.c:1657 #, c-format msgid "index \"%s\" is not valid" msgstr "Index »%s« ist nicht gültig" -#: parser/parse_utilcmd.c:1662 +#: parser/parse_utilcmd.c:1663 #, c-format msgid "\"%s\" is not a unique index" msgstr "»%s« ist kein Unique Index" -#: parser/parse_utilcmd.c:1663 parser/parse_utilcmd.c:1670 -#: parser/parse_utilcmd.c:1677 parser/parse_utilcmd.c:1747 +#: 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:1669 +#: parser/parse_utilcmd.c:1670 #, c-format msgid "index \"%s\" contains expressions" msgstr "Index »%s« enthält Ausdrücke" -#: parser/parse_utilcmd.c:1676 +#: parser/parse_utilcmd.c:1677 #, c-format msgid "\"%s\" is a partial index" msgstr "»%s« ist ein partieller Index" -#: parser/parse_utilcmd.c:1688 +#: parser/parse_utilcmd.c:1689 #, c-format msgid "\"%s\" is a deferrable index" msgstr "»%s« ist ein aufschiebbarer Index" -#: parser/parse_utilcmd.c:1689 +#: 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:1746 +#: 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:1893 +#: 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:1899 +#: 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:2103 +#: 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:2114 +#: 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:2160 +#: 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:2221 +#: 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:2293 +#: 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:2311 parser/parse_utilcmd.c:2410 +#: 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:2329 +#: 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:2333 +#: 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:2342 +#: 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:2348 +#: 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:2376 +#: 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:2383 +#: 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:2586 +#: 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:2700 +#: parser/parse_utilcmd.c:2701 #, c-format msgid "misplaced DEFERRABLE clause" msgstr "falsch platzierte DEFERRABLE-Klausel" -#: parser/parse_utilcmd.c:2705 parser/parse_utilcmd.c:2720 +#: 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:2715 +#: parser/parse_utilcmd.c:2716 #, c-format msgid "misplaced NOT DEFERRABLE clause" msgstr "falsch platzierte NOT DEFERRABLE-Klausel" -#: parser/parse_utilcmd.c:2736 +#: parser/parse_utilcmd.c:2737 #, c-format msgid "misplaced INITIALLY DEFERRED clause" msgstr "falsch platzierte INITIALLY DEFERRED-Klausel" -#: parser/parse_utilcmd.c:2741 parser/parse_utilcmd.c:2767 +#: 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:2762 +#: parser/parse_utilcmd.c:2763 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" msgstr "falsch platzierte INITIALLY IMMEDIATE-Klausel" -#: parser/parse_utilcmd.c:2953 +#: 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)" @@ -14080,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:175 port/sysv_shmem.c:175 +#: 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:176 port/sysv_shmem.c:176 +#: 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:180 port/sysv_shmem.c:180 +#: 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" @@ -14099,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:187 port/sysv_shmem.c:187 +#: 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" @@ -14108,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:193 port/sysv_shmem.c:193 +#: 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" @@ -14117,24 +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:483 port/sysv_shmem.c:483 +#: 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:485 port/sysv_shmem.c:485 +#: 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:551 port/sysv_shmem.c:551 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:646 port/sysv_shmem.c:646 +#: 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" @@ -14284,59 +14112,59 @@ msgstr "Autovacuum wegen Fehlkonfiguration nicht gestartet" msgid "Enable the \"track_counts\" option." msgstr "Schalten Sie die Option »track_counts« ein." -#: postmaster/bgworker.c:346 postmaster/bgworker.c:745 +#: 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:752 +#: 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:764 +#: 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:779 +#: postmaster/bgworker.c:796 #, c-format msgid "too many background workers" msgstr "zu viele Background-Worker" -#: postmaster/bgworker.c:780 +#: 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:784 +#: 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«." @@ -14404,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:3491 +#: 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." @@ -14434,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:355 +#: postmaster/pgstat.c:358 #, c-format msgid "could not resolve \"localhost\": %s" msgstr "konnte »localhost« nicht auflösen: %s" -#: postmaster/pgstat.c:378 +#: 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:387 +#: 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:399 +#: 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:410 +#: 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:426 +#: 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:447 +#: 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:473 +#: postmaster/pgstat.c:476 #, c-format msgid "select() failed in statistics collector: %m" msgstr "select() im Statistiksammelprozess fehlgeschlagen: %m" -#: postmaster/pgstat.c:488 +#: 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:503 +#: 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:513 +#: 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:536 +#: 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:546 +#: 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:693 +#: postmaster/pgstat.c:725 #, c-format msgid "could not fork statistics collector: %m" msgstr "konnte Statistiksammelprozess nicht starten (fork-Fehler): %m" -#: postmaster/pgstat.c:1261 +#: postmaster/pgstat.c:1293 #, c-format msgid "unrecognized reset target: \"%s\"" msgstr "unbekanntes Reset-Ziel: »%s«" -#: postmaster/pgstat.c:1262 +#: 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:3587 +#: postmaster/pgstat.c:3619 #, c-format msgid "could not read statistics message: %m" msgstr "konnte Statistiknachricht nicht lesen: %m" -#: postmaster/pgstat.c:3918 postmaster/pgstat.c:4075 +#: 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:3985 postmaster/pgstat.c:4120 +#: 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:3994 postmaster/pgstat.c:4129 +#: 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:4002 postmaster/pgstat.c:4137 +#: 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:4226 postmaster/pgstat.c:4411 postmaster/pgstat.c:4564 +#: 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: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 +#: 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:4776 +#: 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:5103 +#: 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" @@ -14731,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:1828 +#: 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:1906 postmaster/postmaster.c:1937 +#: postmaster/postmaster.c:1928 postmaster/postmaster.c:1959 #, c-format msgid "incomplete startup packet" msgstr "unvollständiges Startpaket" -#: postmaster/postmaster.c:1918 +#: postmaster/postmaster.c:1940 #, c-format msgid "invalid length of startup packet" msgstr "ungültige Länge des Startpakets" -#: postmaster/postmaster.c:1976 +#: postmaster/postmaster.c:1998 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "konnte SSL-Verhandlungsantwort nicht senden: %m" -#: postmaster/postmaster.c:2005 +#: 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:2068 utils/misc/guc.c:5660 utils/misc/guc.c:5753 +#: 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:2071 +#: 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:2091 +#: 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:2119 +#: 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:2178 +#: postmaster/postmaster.c:2200 #, c-format msgid "the database system is starting up" msgstr "das Datenbanksystem startet" -#: postmaster/postmaster.c:2183 +#: postmaster/postmaster.c:2205 #, c-format msgid "the database system is shutting down" msgstr "das Datenbanksystem fährt herunter" -#: postmaster/postmaster.c:2188 +#: postmaster/postmaster.c:2210 #, c-format msgid "the database system is in recovery mode" msgstr "das Datenbanksystem ist im Wiederherstellungsmodus" -#: postmaster/postmaster.c:2193 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:2255 +#: 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:2263 +#: 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:2483 +#: postmaster/postmaster.c:2505 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "SIGHUP empfangen, Konfigurationsdateien werden neu geladen" -#: postmaster/postmaster.c:2508 +#: postmaster/postmaster.c:2530 #, c-format msgid "pg_hba.conf not reloaded" msgstr "pg_hba.conf nicht neu geladen" -#: postmaster/postmaster.c:2512 +#: postmaster/postmaster.c:2534 #, c-format msgid "pg_ident.conf not reloaded" msgstr "pg_ident.conf nicht neu geladen" -#: postmaster/postmaster.c:2553 +#: postmaster/postmaster.c:2575 #, c-format msgid "received smart shutdown request" msgstr "intelligentes Herunterfahren verlangt" -#: postmaster/postmaster.c:2608 +#: postmaster/postmaster.c:2630 #, c-format msgid "received fast shutdown request" msgstr "schnelles Herunterfahren verlangt" -#: postmaster/postmaster.c:2638 +#: postmaster/postmaster.c:2660 #, c-format msgid "aborting any active transactions" msgstr "etwaige aktive Transaktionen werden abgebrochen" -#: postmaster/postmaster.c:2672 +#: postmaster/postmaster.c:2694 #, c-format msgid "received immediate shutdown request" msgstr "sofortiges Herunterfahren verlangt" -#: postmaster/postmaster.c:2736 +#: postmaster/postmaster.c:2758 #, c-format msgid "shutdown at recovery target" msgstr "Herunterfahren beim Wiederherstellungsziel" -#: postmaster/postmaster.c:2752 postmaster/postmaster.c:2775 +#: postmaster/postmaster.c:2774 postmaster/postmaster.c:2797 msgid "startup process" msgstr "Startprozess" -#: postmaster/postmaster.c:2755 +#: postmaster/postmaster.c:2777 #, c-format msgid "aborting startup due to startup process failure" msgstr "Serverstart abgebrochen wegen Startprozessfehler" -#: postmaster/postmaster.c:2816 +#: postmaster/postmaster.c:2838 #, c-format msgid "database system is ready to accept connections" msgstr "Datenbanksystem ist bereit, um Verbindungen anzunehmen" -#: postmaster/postmaster.c:2835 +#: postmaster/postmaster.c:2857 msgid "background writer process" msgstr "Background-Writer-Prozess" -#: postmaster/postmaster.c:2889 +#: postmaster/postmaster.c:2911 msgid "checkpointer process" msgstr "Checkpointer-Prozess" -#: postmaster/postmaster.c:2905 +#: postmaster/postmaster.c:2927 msgid "WAL writer process" msgstr "WAL-Schreibprozess" -#: postmaster/postmaster.c:2919 +#: postmaster/postmaster.c:2942 msgid "WAL receiver process" msgstr "WAL-Receiver-Prozess" -#: postmaster/postmaster.c:2934 +#: postmaster/postmaster.c:2957 msgid "autovacuum launcher process" msgstr "Autovacuum-Launcher-Prozess" -#: postmaster/postmaster.c:2949 +#: postmaster/postmaster.c:2972 msgid "archiver process" msgstr "Archivierprozess" -#: postmaster/postmaster.c:2965 +#: postmaster/postmaster.c:2988 msgid "statistics collector process" msgstr "Statistiksammelprozess" -#: postmaster/postmaster.c:2979 +#: postmaster/postmaster.c:3002 msgid "system logger process" msgstr "Systemlogger-Prozess" -#: postmaster/postmaster.c:3041 +#: postmaster/postmaster.c:3064 msgid "worker process" msgstr "Worker-Prozess" -#: postmaster/postmaster.c:3124 postmaster/postmaster.c:3144 -#: postmaster/postmaster.c:3151 postmaster/postmaster.c:3169 +#: postmaster/postmaster.c:3147 postmaster/postmaster.c:3167 +#: postmaster/postmaster.c:3174 postmaster/postmaster.c:3192 msgid "server process" msgstr "Serverprozess" -#: postmaster/postmaster.c:3223 +#: 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:3479 +#: 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:3481 postmaster/postmaster.c:3492 -#: postmaster/postmaster.c:3503 postmaster/postmaster.c:3512 -#: postmaster/postmaster.c:3522 +#: 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:3489 +#: 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:3499 +#: 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:3510 +#: 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:3520 +#: 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:3707 +#: postmaster/postmaster.c:3730 #, c-format msgid "abnormal database system shutdown" msgstr "abnormales Herunterfahren des Datenbanksystems" -#: postmaster/postmaster.c:3747 +#: postmaster/postmaster.c:3770 #, c-format msgid "all server processes terminated; reinitializing" msgstr "alle Serverprozesse beendet; initialisiere neu" -#: postmaster/postmaster.c:3959 +#: 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:4001 +#: 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:4115 +#: postmaster/postmaster.c:4138 #, c-format msgid "connection received: host=%s port=%s" msgstr "Verbindung empfangen: Host=%s Port=%s" -#: postmaster/postmaster.c:4120 +#: postmaster/postmaster.c:4143 #, c-format msgid "connection received: host=%s" msgstr "Verbindung empfangen: Host=%s" -#: postmaster/postmaster.c:4403 +#: 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:4947 +#: 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:5238 +#: postmaster/postmaster.c:5267 #, c-format msgid "could not fork startup process: %m" msgstr "konnte Startprozess nicht starten (fork-Fehler): %m" -#: postmaster/postmaster.c:5242 +#: 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:5246 +#: 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:5250 +#: 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:5254 +#: 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:5258 +#: postmaster/postmaster.c:5287 #, c-format msgid "could not fork process: %m" msgstr "konnte Prozess nicht starten (fork-Fehler): %m" -#: postmaster/postmaster.c:5420 postmaster/postmaster.c:5443 +#: 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:5427 postmaster/postmaster.c:5450 +#: 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:5502 +#: postmaster/postmaster.c:5569 #, c-format msgid "starting background worker process \"%s\"" msgstr "starte Background-Worker-Prozess »%s«" -#: postmaster/postmaster.c:5513 +#: 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:5901 +#: 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:5933 +#: 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:5962 +#: 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:5969 +#: 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:5978 +#: 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:5995 +#: 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:6004 +#: 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:6011 +#: 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:6172 +#: 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:6177 +#: postmaster/postmaster.c:6274 #, c-format msgid "could not post child completion status\n" msgstr "konnte Child-Completion-Status nicht versenden\n" @@ -15308,19 +15146,19 @@ msgid "invalid socket: %s" msgstr "ungültiges Socket: %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:426 -#: storage/ipc/latch.c:1280 +#: 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" @@ -15340,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" @@ -15436,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:2330 +#: 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:2426 -#: replication/logical/reorderbuffer.c:2446 +#: 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:2430 -#: replication/logical/reorderbuffer.c:2450 +#: 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:3106 +#: 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 "%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 "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 "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" @@ -15561,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" @@ -15621,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" @@ -15681,22 +15522,22 @@ 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:927 +#: 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" @@ -15761,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)" @@ -16037,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" @@ -16380,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" @@ -16410,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" @@ -16558,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:778 +#: storage/ipc/latch.c:841 #, c-format msgid "epoll_ctl() failed: %m" msgstr "epoll_ctl() fehlgeschlagen: %m" -#: storage/ipc/latch.c:1002 +#: storage/ipc/latch.c:1065 #, c-format msgid "epoll_wait() failed: %m" msgstr "epoll_wait() fehlgeschlagen: %m" -#: storage/ipc/latch.c:1122 +#: storage/ipc/latch.c:1185 #, c-format msgid "poll() failed: %m" msgstr "poll() fehlgeschlagen: %m" @@ -16576,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" @@ -16603,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:530 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:531 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." @@ -16769,87 +16615,87 @@ 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:617 +#: 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:624 +#: 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." @@ -16917,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" @@ -17008,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:4314 +#: 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:4222 +#: tcop/postgres.c:4208 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "ungültiger Subtyp %d von CLOSE-Message" -#: tcop/postgres.c:4257 +#: tcop/postgres.c:4243 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "ungültiger Subtyp %d von DESCRIBE-Message" -#: tcop/postgres.c:4335 +#: 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:4339 +#: 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:4509 +#: 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" @@ -17708,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" @@ -18072,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:3499 +#: utils/adt/timestamp.c:3542 #, c-format msgid "division by zero" msgstr "Division durch Null" @@ -18082,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" @@ -18110,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" @@ -18142,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: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 +#: 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" @@ -18184,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" @@ -18205,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:5259 -#: utils/adt/timestamp.c:5464 +#: 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:5301 utils/adt/timestamp.c:5495 +#: 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" @@ -18783,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:5561 utils/adt/timestamp.c:5642 +#: 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" @@ -18930,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 @@ -18955,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" @@ -19006,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" @@ -19166,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" @@ -19807,50 +19640,50 @@ 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:8367 utils/adt/ruleutils.c:8536 +#: 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" @@ -19984,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:4289 +#: 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" @@ -20004,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:1611 -#: 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 +#: 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:1555 +#: 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:2850 +#: utils/adt/timestamp.c:2893 #, c-format msgid "cannot subtract infinite timestamps" msgstr "kann unendliche timestamp-Werte nicht subtrahieren" -#: utils/adt/timestamp.c:4059 utils/adt/timestamp.c:4584 -#: utils/adt/timestamp.c:4768 utils/adt/timestamp.c:4793 +#: 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:4073 utils/adt/timestamp.c:4538 -#: utils/adt/timestamp.c:4803 +#: 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:4213 utils/adt/timestamp.c:4579 -#: utils/adt/timestamp.c:4990 utils/adt/timestamp.c:5016 +#: 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:4230 utils/adt/timestamp.c:4533 -#: utils/adt/timestamp.c:5025 +#: 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:4311 +#: 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:4317 utils/adt/timestamp.c:5131 +#: 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:4333 utils/adt/timestamp.c:5158 +#: utils/adt/timestamp.c:4376 utils/adt/timestamp.c:5201 #, c-format msgid "interval units \"%s\" not recognized" msgstr "»interval«-Einheit »%s« nicht erkannt" @@ -20494,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" @@ -20654,17 +20486,17 @@ msgstr "keine Ausgabefunktion verfügbar für Typ %s" 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" @@ -23007,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\"" @@ -23087,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«." @@ -23135,17 +22973,17 @@ msgstr "konnte Block %ld von temporärer Datei nicht lesen: %m" 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:4474 +#: 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:4476 +#: utils/sort/tuplesort.c:4481 #, c-format msgid "Key %s is duplicated." msgstr "Schlüssel %s ist doppelt vorhanden." -#: utils/sort/tuplesort.c:4477 +#: utils/sort/tuplesort.c:4482 #, c-format msgid "Duplicate keys exist." msgstr "Es existieren doppelte Schlüssel." diff --git a/src/backend/po/es.po b/src/backend/po/es.po index 8f24b3fc34..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: 2017-01-10 16:42-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-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 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 629554d0fc..980a2a3bef 100644 --- a/src/backend/po/fr.po +++ b/src/backend/po/fr.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-11-26 18:38+0000\n" -"PO-Revision-Date: 2016-11-26 22:31+0100\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" @@ -17,13 +17,13 @@ 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.8.8\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é" -#: ../common/controldata_utils.c:52 commands/copy.c:2833 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" @@ -33,8 +33,8 @@ msgstr "n'a pas pu ouvrir le fichier « %s » pour une lecture : %m" 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" -#: ../common/controldata_utils.c:66 access/transam/timeline.c:346 access/transam/xlog.c:3194 access/transam/xlog.c:10375 access/transam/xlog.c:10388 access/transam/xlog.c:10751 access/transam/xlog.c:10794 access/transam/xlog.c:10833 access/transam/xlog.c:10876 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:3099 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" @@ -141,10 +141,10 @@ msgstr "n'a pas pu lire le répertoire « %s » : %s\n" msgid "could not close directory \"%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:6082 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: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 +#: ../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: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 +#: 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" @@ -260,7 +260,7 @@ msgstr "le processus fils a quitté avec un statut %d non reconnu" msgid "could not determine encoding for 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:4868 +#: ../port/chklocale.c:294 ../port/chklocale.c:423 postmaster/postmaster.c:4899 #, c-format msgid "Please report this to ." msgstr "Veuillez rapporter ceci à ." @@ -352,72 +352,72 @@ msgstr "« %s » n'est pas un index BRIN" 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" -#: 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 @@ -434,7 +434,7 @@ msgstr "le nombre de colonnes indexées (%d) dépasse la limite (%d)" 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" @@ -506,17 +506,17 @@ msgstr "" "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." -#: 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." -#: 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" @@ -531,12 +531,7 @@ msgstr "la posting list est trop longue" 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 »" - -#: access/gin/ginfast.c:989 access/transam/xlog.c:9832 access/transam/xlog.c:10303 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" @@ -568,55 +563,17 @@ msgstr "" 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" - -#: 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 @@ -673,64 +630,26 @@ msgstr "l'index « %s » contient une page zéro inattendue au bloc %u" 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" - #: 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" +"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" +"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" -#: 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." @@ -755,76 +674,24 @@ msgstr "l'index « %s » n'est pas un index haché" 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" - #: 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 lacks support function for operator %s" msgstr "" -"la famille d'opérateur hash « %s » requiert la fonction de support\n" +"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:217 -#, c-format -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" - -#: 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 »" - -#: 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" -#: access/heap/heapam.c:1300 access/heap/heapam.c:1328 access/heap/heapam.c:1360 catalog/aclchk.c:1755 commands/tablecmds.c:9023 commands/tablecmds.c:12092 +#: 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" @@ -854,7 +721,7 @@ msgstr "ne peut pas mettre à jour les lignes lors d'une opération parallèle" msgid "attempted to update invisible tuple" 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 »" @@ -869,12 +736,12 @@ msgstr "la ligne est trop grande : taille %zu, taille maximale %zu" 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" -#: 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:3061 access/transam/xlog.c:3223 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:6885 +#: 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" -#: access/heap/rewriteheap.c:1018 access/heap/rewriteheap.c:1138 access/transam/timeline.c:315 access/transam/timeline.c:461 access/transam/xlog.c:3017 access/transam/xlog.c:3166 access/transam/xlog.c:10161 access/transam/xlog.c:10199 access/transam/xlog.c:10526 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 +#: 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" @@ -884,24 +751,24 @@ msgstr "n'a pas pu créer le fichier « %s » : %m" msgid "could not truncate file \"%s\" to %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" -#: access/heap/rewriteheap.c:1165 access/transam/timeline.c:367 access/transam/timeline.c:401 access/transam/timeline.c:477 access/transam/xlog.c:3052 access/transam/xlog.c:3216 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 +#: 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" -#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10393 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 +#: 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" -#: access/heap/rewriteheap.c:1262 access/transam/timeline.c:111 access/transam/timeline.c:236 access/transam/timeline.c:334 access/transam/xlog.c:2993 access/transam/xlog.c:3110 access/transam/xlog.c:3151 access/transam/xlog.c:3424 access/transam/xlog.c:3502 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: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 +#: 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" @@ -917,7 +784,7 @@ msgstr "la méthode d'accès « %s » n'est pas de type %s" msgid "index access method \"%s\" does not have a 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:12083 +#: 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" @@ -953,7 +820,7 @@ msgstr "" "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" @@ -973,127 +840,25 @@ msgstr "l'index « %s » contient une page interne à moitié morte" 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" - #: 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" - #: 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" @@ -1243,26 +1008,26 @@ 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" -#: 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" -#: 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" -#: 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" -#: 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" @@ -1354,7 +1119,7 @@ msgstr "" "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:3067 access/transam/xlog.c:3228 access/transam/xlogfuncs.c:690 commands/copy.c:1708 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" @@ -1394,139 +1159,139 @@ msgstr "nombre maximum de transactions préparées obtenu" 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" -#: 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" -#: 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." -#: 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" -#: 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" "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" -#: 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" "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" -#: 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" -#: 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" -#: access/transam/twophase.c:1262 access/transam/xlog.c:6083 +#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" "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" -#: 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é" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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" @@ -1681,147 +1446,147 @@ msgstr "ne peut pas valider de sous-transactions pendant une opération parallè 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:2273 +#: 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" -#: access/transam/xlog.c:2293 +#: 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" -#: access/transam/xlog.c:2556 +#: 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" -#: access/transam/xlog.c:3198 +#: access/transam/xlog.c:3230 #, c-format msgid "not enough data in file \"%s\"" msgstr "données insuffisantes dans le fichier « %s »" -#: access/transam/xlog.c:3339 +#: 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" -#: access/transam/xlog.c:3528 access/transam/xlog.c:5313 +#: 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" -#: access/transam/xlog.c:3585 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é" -#: access/transam/xlog.c:3645 access/transam/xlog.c:3720 access/transam/xlog.c:3918 +#: 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" -#: access/transam/xlog.c:3801 +#: access/transam/xlog.c:3833 #, c-format msgid "recycled transaction log file \"%s\"" msgstr "recyclage du journal de transactions « %s »" -#: access/transam/xlog.c:3813 +#: access/transam/xlog.c:3845 #, c-format msgid "removing transaction log file \"%s\"" msgstr "suppression du journal de transactions « %s »" -#: access/transam/xlog.c:3833 +#: 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" -#: access/transam/xlog.c:3845 +#: 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" -#: access/transam/xlog.c:3878 access/transam/xlog.c:3888 +#: 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" -#: access/transam/xlog.c:3894 +#: 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" -#: access/transam/xlog.c:3897 +#: 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" -#: access/transam/xlog.c:3928 +#: 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 »" -#: access/transam/xlog.c:4009 +#: 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" -#: access/transam/xlog.c:4131 +#: 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" -#: access/transam/xlog.c:4145 +#: 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" "avant le point de restauration courant %X/%X" -#: access/transam/xlog.c:4164 +#: access/transam/xlog.c:4196 #, c-format msgid "new target timeline is %u" msgstr "la nouvelle timeline cible est %u" -#: access/transam/xlog.c:4244 +#: 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" -#: access/transam/xlog.c:4255 access/transam/xlog.c:4491 +#: 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" -#: access/transam/xlog.c:4261 access/transam/xlog.c:4497 +#: 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" -#: access/transam/xlog.c:4266 access/transam/xlog.c:4502 +#: 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" -#: access/transam/xlog.c:4284 access/transam/xlog.c:4480 +#: 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" -#: access/transam/xlog.c:4290 +#: 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" -#: access/transam/xlog.c:4303 access/transam/xlog.c:4312 access/transam/xlog.c:4336 access/transam/xlog.c:4343 access/transam/xlog.c:4350 access/transam/xlog.c:4355 access/transam/xlog.c:4362 access/transam/xlog.c:4369 access/transam/xlog.c:4376 access/transam/xlog.c:4383 access/transam/xlog.c:4390 access/transam/xlog.c:4397 access/transam/xlog.c:4404 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 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" -#: access/transam/xlog.c:4304 +#: 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 "" @@ -1829,300 +1594,300 @@ msgstr "" "%d (0x%08x) alors que le serveur a été compilé avec un PG_CONTROL_VERSION à\n" "%d (0x%08x)." -#: access/transam/xlog.c:4308 +#: 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" "Il se peut que vous ayez besoin d'initdb." -#: access/transam/xlog.c:4313 +#: 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." -#: access/transam/xlog.c:4316 access/transam/xlog.c:4340 access/transam/xlog.c:4347 access/transam/xlog.c:4352 +#: 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:4327 +#: 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" -#: access/transam/xlog.c:4337 +#: 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." -#: access/transam/xlog.c:4344 +#: 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." -#: access/transam/xlog.c:4351 +#: 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." -#: access/transam/xlog.c:4356 +#: 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." -#: 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:4408 access/transam/xlog.c:4416 access/transam/xlog.c:4423 access/transam/xlog.c:4432 access/transam/xlog.c:4439 access/transam/xlog.c:4448 access/transam/xlog.c:4455 +#: 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:4363 +#: 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." -#: access/transam/xlog.c:4370 +#: 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." -#: access/transam/xlog.c:4377 +#: 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." -#: access/transam/xlog.c:4384 +#: 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." -#: access/transam/xlog.c:4391 +#: 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." -#: access/transam/xlog.c:4398 +#: 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." -#: access/transam/xlog.c:4405 +#: 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." -#: access/transam/xlog.c:4414 +#: 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." -#: access/transam/xlog.c:4421 +#: 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." -#: access/transam/xlog.c:4430 +#: 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." -#: access/transam/xlog.c:4437 +#: 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." -#: access/transam/xlog.c:4446 +#: 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." -#: access/transam/xlog.c:4453 +#: 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." -#: access/transam/xlog.c:4874 +#: 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" -#: access/transam/xlog.c:4880 +#: 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" "transactions : %m" -#: access/transam/xlog.c:4885 +#: 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" -#: access/transam/xlog.c:4960 +#: 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" -#: access/transam/xlog.c:5006 access/transam/xlog.c:5091 +#: 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 »" -#: access/transam/xlog.c:5009 +#: access/transam/xlog.c:5041 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." msgstr "Les valeurs valides sont « pause », « promote » et « shutdown »." -#: 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 n'est pas un nombre valide : « %s »" -#: access/transam/xlog.c:5046 +#: 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 »" -#: access/transam/xlog.c:5077 +#: 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)" -#: access/transam/xlog.c:5094 +#: access/transam/xlog.c:5126 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "La seule valeur autorisée est « immediate »." -#: access/transam/xlog.c:5107 access/transam/xlog.c:5118 commands/extension.c:533 commands/extension.c:541 utils/misc/guc.c:5640 +#: 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" -#: access/transam/xlog.c:5153 +#: access/transam/xlog.c:5185 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "le paramètre « %s » requiert une valeur temporelle" -#: access/transam/xlog.c:5155 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:795 commands/tablecmds.c:9484 commands/user.c:1045 commands/view.c:470 libpq/auth.c:307 replication/syncrep.c:919 storage/lmgr/deadlock.c:1139 storage/lmgr/proc.c:1276 utils/adt/acl.c:5281 utils/misc/guc.c:5662 +#: 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:5162 +#: access/transam/xlog.c:5194 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "paramètre de restauration « %s » non reconnu" -#: access/transam/xlog.c:5173 +#: 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" -#: access/transam/xlog.c:5175 +#: 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." -#: access/transam/xlog.c:5182 +#: 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é" -#: access/transam/xlog.c:5203 +#: 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" -#: access/transam/xlog.c:5222 +#: 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:5343 +#: access/transam/xlog.c:5375 #, c-format msgid "archive recovery complete" msgstr "restauration terminée de l'archive" -#: access/transam/xlog.c:5402 access/transam/xlog.c:5630 +#: 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" -#: access/transam/xlog.c:5490 +#: 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" -#: access/transam/xlog.c:5497 +#: 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" -#: access/transam/xlog.c:5542 +#: 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" -#: access/transam/xlog.c:5610 +#: 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" -#: access/transam/xlog.c:5618 +#: 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" -#: access/transam/xlog.c:5657 +#: access/transam/xlog.c:5689 #, c-format msgid "recovery has paused" msgstr "restauration en pause" -#: access/transam/xlog.c:5658 +#: access/transam/xlog.c:5690 #, c-format msgid "Execute pg_xlog_replay_resume() to continue." msgstr "Exécuter pg_xlog_replay_resume() pour continuer." -#: access/transam/xlog.c:5865 +#: 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 "" @@ -2130,266 +1895,266 @@ msgstr "" "paramètrage plus bas que celui du serveur maître des journaux de transactions\n" "(la valeur était %d)" -#: access/transam/xlog.c:5891 +#: 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" -#: access/transam/xlog.c:5892 +#: 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" "pris une nouvelle sauvegarde de base." -#: access/transam/xlog.c:5903 +#: 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" -#: access/transam/xlog.c:5904 +#: 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." -#: access/transam/xlog.c:5961 +#: access/transam/xlog.c:5993 #, c-format msgid "control file contains invalid data" msgstr "le fichier de contrôle contient des données invalides" -#: access/transam/xlog.c:5967 +#: 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" -#: access/transam/xlog.c:5972 +#: 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" -#: access/transam/xlog.c:5976 +#: 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" -#: access/transam/xlog.c:5980 +#: 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" -#: access/transam/xlog.c:5982 +#: 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." -#: access/transam/xlog.c:5986 +#: 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" "(moment de la journalisation)" -#: access/transam/xlog.c:5988 +#: 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." -#: access/transam/xlog.c:5992 +#: 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" -#: access/transam/xlog.c:6048 +#: access/transam/xlog.c:6080 #, c-format msgid "entering standby mode" msgstr "entre en mode standby" -#: access/transam/xlog.c:6051 +#: 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" -#: access/transam/xlog.c:6055 +#: 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" -#: access/transam/xlog.c:6059 +#: access/transam/xlog.c:6091 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "début de la restauration PITR à « %s »" -#: access/transam/xlog.c:6063 +#: 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" -#: access/transam/xlog.c:6066 +#: access/transam/xlog.c:6098 #, c-format msgid "starting archive recovery" msgstr "début de la restauration de l'archive" -#: access/transam/xlog.c:6110 access/transam/xlog.c:6238 +#: 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" -#: access/transam/xlog.c:6124 +#: 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" -#: access/transam/xlog.c:6125 access/transam/xlog.c:6132 +#: 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 »." -#: access/transam/xlog.c:6131 +#: 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" -#: access/transam/xlog.c:6157 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" -#: access/transam/xlog.c:6189 access/transam/xlog.c:6195 +#: 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" -#: access/transam/xlog.c:6191 access/transam/xlog.c:10955 +#: 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 »." -#: access/transam/xlog.c:6197 +#: 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" -#: access/transam/xlog.c:6248 access/transam/xlog.c:6263 +#: 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" -#: access/transam/xlog.c:6257 +#: 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" -#: access/transam/xlog.c:6301 +#: 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:6303 +#: 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." -#: access/transam/xlog.c:6319 +#: 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:6350 +#: access/transam/xlog.c:6382 #, c-format msgid "invalid next transaction ID" msgstr "prochain ID de transaction invalide" -#: access/transam/xlog.c:6433 +#: 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" -#: access/transam/xlog.c:6444 +#: 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" -#: access/transam/xlog.c:6472 +#: 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" "automatique en cours" -#: access/transam/xlog.c:6476 +#: 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" -#: access/transam/xlog.c:6520 +#: 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" -#: access/transam/xlog.c:6521 +#: 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." -#: access/transam/xlog.c:6595 +#: access/transam/xlog.c:6627 #, c-format msgid "initializing for hot standby" msgstr "initialisation pour « Hot Standby »" -#: access/transam/xlog.c:6727 +#: access/transam/xlog.c:6759 #, c-format msgid "redo starts at %X/%X" msgstr "la ré-exécution commence à %X/%X" -#: access/transam/xlog.c:6952 +#: 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" -#: access/transam/xlog.c:6990 +#: access/transam/xlog.c:7022 #, c-format msgid "redo done at %X/%X" msgstr "ré-exécution faite à %X/%X" -#: access/transam/xlog.c:6995 access/transam/xlog.c:8943 +#: 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)" -#: access/transam/xlog.c:7004 +#: access/transam/xlog.c:7036 #, c-format msgid "redo is not required" msgstr "la ré-exécution n'est pas nécessaire" -#: access/transam/xlog.c:7079 access/transam/xlog.c:7083 +#: 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:7080 +#: 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." -#: access/transam/xlog.c:7084 +#: 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 "" @@ -2397,219 +2162,219 @@ msgstr "" "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:7087 +#: 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" -#: access/transam/xlog.c:7114 +#: access/transam/xlog.c:7146 #, c-format msgid "selected new timeline ID: %u" msgstr "identifiant d'un timeline nouvellement sélectionné : %u" -#: access/transam/xlog.c:7525 +#: access/transam/xlog.c:7557 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "état de restauration cohérent atteint à %X/%X" -#: access/transam/xlog.c:7716 +#: 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" -#: access/transam/xlog.c:7720 +#: 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" -#: access/transam/xlog.c:7724 +#: 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" -#: access/transam/xlog.c:7741 +#: access/transam/xlog.c:7773 #, c-format msgid "invalid primary checkpoint record" msgstr "enregistrement du point de vérification primaire invalide" -#: access/transam/xlog.c:7745 +#: access/transam/xlog.c:7777 #, c-format msgid "invalid secondary checkpoint record" msgstr "enregistrement du point de vérification secondaire invalide" -#: access/transam/xlog.c:7749 +#: access/transam/xlog.c:7781 #, c-format msgid "invalid checkpoint record" msgstr "enregistrement du point de vérification invalide" -#: access/transam/xlog.c:7760 +#: 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" -#: access/transam/xlog.c:7764 +#: 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" -#: access/transam/xlog.c:7768 +#: 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" -#: access/transam/xlog.c:7780 +#: 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" -#: access/transam/xlog.c:7784 +#: 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" -#: access/transam/xlog.c:7788 +#: 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" -#: access/transam/xlog.c:7799 +#: 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" -#: access/transam/xlog.c:7803 +#: 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" -#: access/transam/xlog.c:7807 +#: access/transam/xlog.c:7839 #, c-format msgid "invalid length of checkpoint record" msgstr "longueur invalide de l'enregistrement du point de vérification" -#: access/transam/xlog.c:7975 +#: access/transam/xlog.c:8007 #, c-format msgid "shutting down" msgstr "arrêt en cours" -#: access/transam/xlog.c:8488 +#: 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" -#: access/transam/xlog.c:8742 +#: 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" -#: access/transam/xlog.c:8765 +#: 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" -#: access/transam/xlog.c:8941 +#: access/transam/xlog.c:8984 #, c-format msgid "recovery restart point at %X/%X" msgstr "la ré-exécution en restauration commence à %X/%X" -#: access/transam/xlog.c:9074 +#: access/transam/xlog.c:9117 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "point de restauration « %s » créé à %X/%X" -#: access/transam/xlog.c:9204 +#: 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" -#: access/transam/xlog.c:9213 +#: 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" -#: access/transam/xlog.c:9229 +#: 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:9300 +#: 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" -#: access/transam/xlog.c:9356 access/transam/xlog.c:9403 access/transam/xlog.c:9426 +#: 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" -#: access/transam/xlog.c:9701 +#: 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:9725 +#: 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" -#: access/transam/xlog.c:9733 +#: 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:9742 +#: 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:9833 access/transam/xlog.c:10304 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." -#: access/transam/xlog.c:9842 access/transam/xlog.c:10313 +#: 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" "faire une sauvegarde en ligne." -#: access/transam/xlog.c:9843 access/transam/xlog.c:10314 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." -#: access/transam/xlog.c:9848 +#: 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:9880 access/transam/xlog.c:10152 access/transam/xlog.c:10190 +#: 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" -#: access/transam/xlog.c:9881 +#: 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." -#: access/transam/xlog.c:9976 +#: 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." -#: access/transam/xlog.c:9978 access/transam/xlog.c:10477 +#: 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 "" @@ -2617,86 +2382,86 @@ msgstr "" "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:10045 replication/basebackup.c:1026 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" -#: access/transam/xlog.c:10052 replication/basebackup.c:1031 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" -#: access/transam/xlog.c:10105 commands/tablespace.c:391 commands/tablespace.c:553 replication/basebackup.c:1047 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" -#: access/transam/xlog.c:10146 access/transam/xlog.c:10184 access/transam/xlog.c:10363 access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265 commands/copy.c:1815 commands/copy.c:2839 commands/extension.c:3109 commands/tablespace.c:782 commands/tablespace.c:873 guc-file.l:1001 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: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" -#: access/transam/xlog.c:10153 access/transam/xlog.c:10191 +#: 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." -#: access/transam/xlog.c:10170 access/transam/xlog.c:10208 access/transam/xlog.c:10538 +#: 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" -#: access/transam/xlog.c:10327 +#: 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:10367 +#: 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:10412 access/transam/xlog.c:10425 access/transam/xlog.c:10765 access/transam/xlog.c:10771 access/transam/xlog.c:10855 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 »" -#: access/transam/xlog.c:10429 replication/basebackup.c:938 +#: 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" -#: access/transam/xlog.c:10430 replication/basebackup.c:939 +#: 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." -#: access/transam/xlog.c:10475 +#: 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" "de la sauvegarde en ligne" -#: access/transam/xlog.c:10587 +#: 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" -#: access/transam/xlog.c:10597 +#: 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)" -#: access/transam/xlog.c:10599 +#: 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 "" @@ -2704,12 +2469,12 @@ msgstr "" "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:10606 +#: 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" -#: access/transam/xlog.c:10610 +#: 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 "" @@ -2718,57 +2483,57 @@ msgstr "" "transactions sont copiés par d'autre moyens pour terminer la sauvegarde." #. translator: %s is an XLog record description -#: access/transam/xlog.c:10895 +#: access/transam/xlog.c:11005 #, c-format msgid "xlog redo at %X/%X for %s" msgstr "xlog redo à %X/%X pour %s" -#: access/transam/xlog.c:10944 +#: 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é" -#: access/transam/xlog.c:10945 +#: 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" -#: access/transam/xlog.c:10954 access/transam/xlog.c:10966 access/transam/xlog.c:10976 +#: 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é" -#: access/transam/xlog.c:10967 +#: 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 »." -#: access/transam/xlog.c:10977 +#: 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" -#: access/transam/xlog.c:11099 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" -#: access/transam/xlog.c:11111 +#: 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" -#: access/transam/xlog.c:11585 +#: access/transam/xlog.c:11695 #, c-format msgid "received promote request" msgstr "a reçu une demande de promotion" -#: access/transam/xlog.c:11598 +#: access/transam/xlog.c:11708 #, c-format msgid "trigger file found: %s" msgstr "fichier trigger trouvé : %s" -#: access/transam/xlog.c:11607 +#: 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" @@ -2796,7 +2561,7 @@ msgstr "n'a pas pu restaurer le fichier « %s » à partir de l'archive : %s" 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:1298 +#: 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" @@ -2811,83 +2576,83 @@ msgstr "n'a pas pu créer le fichier de statut d'archivage « %s » : %m" msgid "could not write archive status file \"%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é" -#: 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" -#: 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: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" -#: 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:8436 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" "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:8440 +#: 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" -#: 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" -#: 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)" -#: 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." -#: 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." -#: 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 "" @@ -3031,22 +2796,22 @@ msgstr "enregistrement de longueur invalide à %X/%X" msgid "invalid compressed image at %X/%X, block %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" -#: 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" @@ -3056,497 +2821,497 @@ msgstr "Essayez « %s --help » pour plus d'informations.\n" 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" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: catalog/aclchk.c:874 catalog/aclchk.c:882 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: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" -#: catalog/aclchk.c:1494 catalog/objectaddress.c:1390 commands/analyze.c:376 commands/copy.c:4458 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:7914 commands/tablecmds.c:8119 commands/tablecmds.c:8539 commands/trigger.c:642 parser/analyze.c:2231 -#: parser/parse_relation.c:2542 parser/parse_relation.c:2604 parser/parse_target.c:951 parser/parse_type.c:127 utils/adt/acl.c:2840 utils/adt/ruleutils.c:1984 +#: 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" -#: catalog/aclchk.c:1763 catalog/objectaddress.c:1203 commands/sequence.c:1078 commands/tablecmds.c:223 commands/tablecmds.c:12057 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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." -#: 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" -#: catalog/aclchk.c:3252 +#: catalog/aclchk.c:3260 #, c-format msgid "unrecognized privilege type \"%s\"" 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" -#: catalog/aclchk.c:3303 +#: catalog/aclchk.c:3311 #, c-format msgid "permission denied for 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" -#: 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" -#: catalog/aclchk.c:3309 +#: catalog/aclchk.c:3317 #, c-format msgid "permission denied for function %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" -#: catalog/aclchk.c:3313 +#: catalog/aclchk.c:3321 #, c-format msgid "permission denied for 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" -#: 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" -#: catalog/aclchk.c:3319 +#: catalog/aclchk.c:3327 #, c-format msgid "permission denied for schema %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" -#: 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" -#: catalog/aclchk.c:3325 +#: catalog/aclchk.c:3333 #, c-format msgid "permission denied for collation %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" -#: catalog/aclchk.c:3329 +#: catalog/aclchk.c:3337 #, c-format msgid "permission denied for 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: catalog/aclchk.c:3341 +#: catalog/aclchk.c:3349 #, c-format msgid "permission denied for 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" @@ -3634,12 +3399,12 @@ msgstr "droit refusé pour créer « %s.%s »" msgid "System catalog modifications are currently disallowed." msgstr "Les modifications du catalogue système sont actuellement interdites." -#: catalog/heap.c:415 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:432 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" @@ -3674,17 +3439,17 @@ msgstr "le type composite %s ne peut pas être membre de lui-même" 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" -#: catalog/heap.c:586 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:1067 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à" -#: 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 +#: 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à" @@ -3701,89 +3466,89 @@ msgstr "" 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" -#: catalog/heap.c:2290 +#: catalog/heap.c:2291 #, c-format msgid "check constraint \"%s\" already exists" msgstr "la contrainte de vérification « %s » existe déjà" -#: catalog/heap.c:2455 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à" -#: catalog/heap.c:2462 +#: 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 »" -#: catalog/heap.c:2473 +#: 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:2483 +#: 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:2488 +#: 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" -#: catalog/heap.c:2594 +#: 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" -#: catalog/heap.c:2605 +#: 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" -#: catalog/heap.c:2624 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" -#: catalog/heap.c:2629 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 +#: 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." -#: catalog/heap.c:2676 +#: 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" -#: catalog/heap.c:2916 +#: 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" -#: catalog/heap.c:2917 +#: 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." -#: catalog/heap.c:2922 +#: 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" -#: catalog/heap.c:2923 +#: catalog/heap.c:2924 #, c-format msgid "Table \"%s\" references \"%s\"." msgstr "La table « %s » référence « %s »." -#: catalog/heap.c:2925 +#: 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." -#: 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 »" @@ -3810,7 +3575,7 @@ msgstr "" msgid "shared indexes cannot be created after 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" @@ -3840,11 +3605,6 @@ msgstr "ne peut pas ré-indexer les tables temporaires des autres sessions" 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." - #: 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\"" @@ -3865,17 +3625,17 @@ msgstr "n'a pas pu obtenir un verrou sur la relation « %s.%s »" msgid "could not obtain lock on 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" -#: 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" -#: 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" @@ -3920,7 +3680,7 @@ msgstr "la configuration de recherche plein texte « %s » n'existe pas" 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" -#: catalog/namespace.c:2652 gram.y:13450 gram.y:14819 parser/parse_expr.c:799 parser/parse_target.c:1148 +#: 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" @@ -3935,7 +3695,7 @@ msgstr "ne peut pas déplacer les objets dans ou à partir des schémas temporai 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" -#: 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" @@ -3967,8 +3727,8 @@ 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:9875 #, c-format @@ -3983,7 +3743,7 @@ msgstr "le nom de la méthode d'accès ne peut pas être qualifiée" msgid "database name cannot be qualified" 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é" @@ -4016,22 +3776,22 @@ msgstr "le nom du serveur ne peut pas être qualifié" msgid "event trigger name cannot be qualified" 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:8016 +#: 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" -#: catalog/objectaddress.c:1217 commands/tablecmds.c:229 commands/tablecmds.c:4376 commands/tablecmds.c:12062 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" -#: catalog/objectaddress.c:1224 commands/matview.c:174 commands/tablecmds.c:235 commands/tablecmds.c:12067 +#: 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" -#: catalog/objectaddress.c:1231 commands/tablecmds.c:253 commands/tablecmds.c:4379 commands/tablecmds.c:12072 +#: 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" @@ -4046,7 +3806,7 @@ msgstr "le nom de la colonne doit être qualifié" 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" -#: 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" @@ -4056,157 +3816,157 @@ msgstr "le type « %s » n'existe pas" msgid "operator %d (%s, %s) of %s does not exist" 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" -#: 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" -#: 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" -#: 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 »." -#: 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" -#: 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" -#: 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é" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: catalog/objectaddress.c:2227 +#: catalog/objectaddress.c:2231 #, c-format msgid "must have CREATEROLE privilege" msgstr "doit avoir l'attribut CREATEROLE" -#: catalog/objectaddress.c:2302 +#: catalog/objectaddress.c:2306 #, c-format msgid "unrecognized object type \"%s\"" msgstr "type d'objet non reconnu « %s »" -#: catalog/objectaddress.c:2497 +#: catalog/objectaddress.c:2501 #, c-format msgid " column %s" msgstr " colonne %s" -#: catalog/objectaddress.c:2503 +#: catalog/objectaddress.c:2507 #, c-format msgid "function %s" msgstr "fonction %s" -#: catalog/objectaddress.c:2508 +#: catalog/objectaddress.c:2512 #, c-format msgid "type %s" msgstr "type %s" -#: catalog/objectaddress.c:2538 +#: catalog/objectaddress.c:2542 #, c-format msgid "cast from %s to %s" msgstr "conversion de %s en %s" -#: catalog/objectaddress.c:2558 +#: catalog/objectaddress.c:2562 #, c-format msgid "collation %s" msgstr "collationnement %s" -#: catalog/objectaddress.c:2582 +#: catalog/objectaddress.c:2586 #, c-format msgid "constraint %s on %s" msgstr "contrainte %s sur %s" -#: catalog/objectaddress.c:2588 +#: catalog/objectaddress.c:2592 #, c-format msgid "constraint %s" msgstr "contrainte %s" -#: catalog/objectaddress.c:2605 +#: catalog/objectaddress.c:2609 #, c-format msgid "conversion %s" msgstr "conversion %s" -#: catalog/objectaddress.c:2642 +#: catalog/objectaddress.c:2646 #, c-format msgid "default for %s" msgstr "valeur par défaut pour %s" -#: catalog/objectaddress.c:2651 +#: catalog/objectaddress.c:2655 #, c-format msgid "language %s" msgstr "langage %s" -#: catalog/objectaddress.c:2656 +#: catalog/objectaddress.c:2660 #, c-format msgid "large object %u" msgstr "« Large Object » %u" -#: catalog/objectaddress.c:2661 +#: catalog/objectaddress.c:2665 #, c-format msgid "operator %s" msgstr "opérateur %s" -#: catalog/objectaddress.c:2693 +#: 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" @@ -4215,7 +3975,7 @@ msgstr "classe d'opérateur %s pour la méthode d'accè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:2743 +#: catalog/objectaddress.c:2747 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "opérateur %d (%s, %s) de %s : %s" @@ -4224,177 +3984,177 @@ msgstr "opérateur %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:2793 +#: 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:2833 +#: catalog/objectaddress.c:2837 #, c-format msgid "rule %s on " msgstr "règle %s active " -#: catalog/objectaddress.c:2855 +#: catalog/objectaddress.c:2859 #, c-format msgid "transform for %s language %s" msgstr "transformation pour %s langage %s" -#: catalog/objectaddress.c:2889 +#: catalog/objectaddress.c:2893 #, c-format msgid "trigger %s on " msgstr "trigger %s actif " -#: catalog/objectaddress.c:2906 +#: catalog/objectaddress.c:2910 #, c-format msgid "schema %s" msgstr "schéma %s" -#: catalog/objectaddress.c:2919 +#: catalog/objectaddress.c:2923 #, c-format msgid "text search parser %s" msgstr "analyseur %s de la recherche plein texte" -#: catalog/objectaddress.c:2934 +#: catalog/objectaddress.c:2938 #, c-format msgid "text search dictionary %s" msgstr "dictionnaire %s de la recherche plein texte" -#: catalog/objectaddress.c:2949 +#: catalog/objectaddress.c:2953 #, c-format msgid "text search template %s" msgstr "modèle %s de la recherche plein texte" -#: catalog/objectaddress.c:2964 +#: catalog/objectaddress.c:2968 #, c-format msgid "text search configuration %s" msgstr "configuration %s de recherche plein texte" -#: catalog/objectaddress.c:2972 +#: catalog/objectaddress.c:2976 #, c-format msgid "role %s" msgstr "rôle %s" -#: catalog/objectaddress.c:2985 +#: catalog/objectaddress.c:2989 #, c-format msgid "database %s" msgstr "base de données %s" -#: catalog/objectaddress.c:2997 +#: catalog/objectaddress.c:3001 #, c-format msgid "tablespace %s" msgstr "tablespace %s" -#: catalog/objectaddress.c:3006 +#: catalog/objectaddress.c:3010 #, c-format msgid "foreign-data wrapper %s" msgstr "wrapper de données distantes %s" -#: catalog/objectaddress.c:3015 +#: catalog/objectaddress.c:3019 #, c-format msgid "server %s" msgstr "serveur %s" -#: catalog/objectaddress.c:3043 +#: 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:3078 +#: 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" -#: catalog/objectaddress.c:3083 +#: 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" -#: catalog/objectaddress.c:3088 +#: 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" -#: catalog/objectaddress.c:3093 +#: 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" -#: catalog/objectaddress.c:3099 +#: catalog/objectaddress.c:3103 #, c-format msgid "default privileges belonging to role %s" msgstr "droits par défaut appartenant au rôle %s" -#: catalog/objectaddress.c:3107 +#: catalog/objectaddress.c:3111 #, c-format msgid " in schema %s" msgstr " dans le schéma %s" -#: catalog/objectaddress.c:3124 +#: catalog/objectaddress.c:3128 #, c-format msgid "extension %s" msgstr "extension %s" -#: catalog/objectaddress.c:3137 +#: catalog/objectaddress.c:3141 #, c-format msgid "event trigger %s" msgstr "trigger sur événement %s" -#: catalog/objectaddress.c:3169 +#: catalog/objectaddress.c:3173 #, c-format msgid "policy %s on " msgstr "politique %s sur " -#: catalog/objectaddress.c:3187 +#: catalog/objectaddress.c:3191 #, c-format msgid "access method %s" msgstr "méthode d'accès %s" -#: catalog/objectaddress.c:3247 +#: catalog/objectaddress.c:3251 #, c-format msgid "table %s" msgstr "table %s" -#: catalog/objectaddress.c:3251 +#: catalog/objectaddress.c:3255 #, c-format msgid "index %s" msgstr "index %s" -#: catalog/objectaddress.c:3255 +#: catalog/objectaddress.c:3259 #, c-format msgid "sequence %s" msgstr "séquence %s" -#: catalog/objectaddress.c:3259 +#: catalog/objectaddress.c:3263 #, c-format msgid "toast table %s" msgstr "table TOAST %s" -#: catalog/objectaddress.c:3263 +#: catalog/objectaddress.c:3267 #, c-format msgid "view %s" msgstr "vue %s" -#: catalog/objectaddress.c:3267 +#: catalog/objectaddress.c:3271 #, c-format msgid "materialized view %s" msgstr "vue matérialisée %s" -#: catalog/objectaddress.c:3271 +#: catalog/objectaddress.c:3275 #, c-format msgid "composite type %s" msgstr "type composite %s" -#: catalog/objectaddress.c:3275 +#: catalog/objectaddress.c:3279 #, c-format msgid "foreign table %s" msgstr "table distante %s" -#: catalog/objectaddress.c:3280 +#: catalog/objectaddress.c:3284 #, c-format msgid "relation %s" msgstr "relation %s" -#: catalog/objectaddress.c:3317 +#: 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" @@ -4463,8 +4223,8 @@ 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 @@ -4575,7 +4335,7 @@ msgstr "la conversion « %s » existe déjà" msgid "default conversion for %s to %s already exists" 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 »" @@ -4783,7 +4543,7 @@ 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 »" @@ -4887,12 +4647,12 @@ msgstr "l'alignement « %c » est invalide pour le type de longueur variable" 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" -#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4358 commands/tablecmds.c:11950 +#: 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" @@ -5064,7 +4824,7 @@ msgstr "la méthode d'accès « %s » existe déjà" msgid "must be superuser to drop access methods" 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" @@ -5147,7 +4907,7 @@ msgstr "ignore l'analyse de l'arbre d'héritage « %s.%s » --- cet arbre d'hér 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" -#: 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" @@ -5205,7 +4965,7 @@ msgstr "ne peut pas exécuter CLUSTER sur les tables temporaires des autres sess msgid "there is no previously clustered index for table \"%s\"" msgstr "Il n'existe pas d'index CLUSTER pour la table « %s »" -#: commands/cluster.c:173 commands/tablecmds.c:9325 commands/tablecmds.c:11052 +#: 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" @@ -5220,7 +4980,7 @@ msgstr "ne peut pas exécuter CLUSTER sur un catalogue partagé" msgid "cannot vacuum temporary tables of other sessions" msgstr "ne peut pas exécuter VACUUM sur les tables temporaires des autres sessions" -#: commands/cluster.c:431 commands/tablecmds.c:11062 +#: 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 »" @@ -5242,29 +5002,29 @@ msgstr "ne peut pas exécuter CLUSTER sur l'index partiel « %s »" msgid "cannot cluster on invalid index \"%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 »" -#: 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" -#: 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 »" -#: 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" "parmi %u pages" -#: commands/cluster.c:1092 +#: commands/cluster.c:1094 #, c-format msgid "" "%.0f dead row versions cannot be removed yet.\n" @@ -5303,7 +5063,7 @@ msgstr "le collationnement « %s » existe déjà dans le schéma « %s »" msgid "database \"%s\" does not exist" 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" @@ -5363,7 +5123,7 @@ msgstr "connexion perdue lors de l'opération COPY vers stdout" 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 "" @@ -5407,444 +5167,444 @@ msgstr "COPY FROM non supporté avec la sécurité niveau ligne" msgid "Use INSERT statements instead." msgstr "Utilisez des instructions INSERT à la place." -#: commands/copy.c:1058 +#: commands/copy.c:1059 #, c-format msgid "COPY format \"%s\" not recognized" msgstr "format COPY « %s » non reconnu" -#: commands/copy.c:1129 commands/copy.c:1143 commands/copy.c:1157 commands/copy.c:1177 +#: 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" -#: commands/copy.c:1190 +#: 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" -#: commands/copy.c:1196 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" -#: commands/copy.c:1207 +#: 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)" -#: commands/copy.c:1212 +#: commands/copy.c:1213 #, c-format msgid "cannot specify NULL in BINARY mode" msgstr "ne peut pas spécifier NULL en mode binaire (BINARY)" -#: commands/copy.c:1234 +#: 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" -#: commands/copy.c:1241 +#: 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" -#: commands/copy.c:1247 +#: 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" -#: commands/copy.c:1264 +#: commands/copy.c:1265 #, c-format msgid "COPY delimiter cannot be \"%s\"" msgstr "le délimiteur de COPY ne peut pas être « %s »" -#: commands/copy.c:1270 +#: 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:1276 +#: 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:1281 +#: 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" -#: commands/copy.c:1286 +#: 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" -#: commands/copy.c:1292 +#: 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" -#: commands/copy.c:1297 +#: 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" -#: commands/copy.c:1303 +#: 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" -#: commands/copy.c:1307 +#: 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" -#: commands/copy.c:1313 +#: 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" -#: commands/copy.c:1317 +#: 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" -#: commands/copy.c:1323 +#: 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" -#: commands/copy.c:1328 +#: 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" -#: commands/copy.c:1334 +#: 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" -#: commands/copy.c:1341 +#: 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" -#: commands/copy.c:1402 +#: commands/copy.c:1403 #, c-format msgid "table \"%s\" does not have OIDs" msgstr "la table « %s » n'a pas d'OID" -#: commands/copy.c:1419 +#: commands/copy.c:1420 #, c-format msgid "COPY (query) WITH OIDS is not supported" msgstr "COPY (requête) WITH OIDS n'est pas supporté" -#: commands/copy.c:1439 +#: 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" -#: commands/copy.c:1453 +#: 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" -#: commands/copy.c:1457 +#: 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" -#: commands/copy.c:1462 +#: 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" -#: commands/copy.c:1472 +#: commands/copy.c:1473 #, c-format msgid "COPY (SELECT INTO) is not supported" msgstr "COPY (SELECT INTO) n'est pas supporté" -#: commands/copy.c:1489 +#: commands/copy.c:1490 #, c-format msgid "COPY query must have a RETURNING clause" msgstr "La requête COPY doit avoir une clause RETURNING" -#: commands/copy.c:1517 +#: 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é" -#: commands/copy.c:1575 +#: 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" -#: commands/copy.c:1597 +#: 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" -#: commands/copy.c:1619 +#: 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" -#: commands/copy.c:1684 +#: 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:1688 +#: commands/copy.c:1689 #, c-format msgid "program \"%s\" failed" msgstr "le programme « %s » a échoué" -#: commands/copy.c:1738 +#: commands/copy.c:1739 #, c-format msgid "cannot copy from view \"%s\"" msgstr "ne peut pas copier à partir de la vue « %s »" -#: commands/copy.c:1740 commands/copy.c:1746 commands/copy.c:1752 +#: 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:1744 +#: 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 »" -#: commands/copy.c:1750 +#: commands/copy.c:1751 #, c-format msgid "cannot copy from foreign table \"%s\"" msgstr "ne peut pas copier à partir de la table distante « %s »" -#: commands/copy.c:1756 +#: commands/copy.c:1757 #, c-format msgid "cannot copy from sequence \"%s\"" msgstr "ne peut pas copier à partir de la séquence « %s »" -#: commands/copy.c:1761 +#: 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" -#: commands/copy.c:1786 commands/copy.c:2822 +#: 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" -#: commands/copy.c:1801 +#: 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" -#: commands/copy.c:1809 +#: 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" -#: commands/copy.c:1821 commands/copy.c:2845 +#: commands/copy.c:1822 commands/copy.c:2846 #, c-format msgid "\"%s\" is a directory" msgstr "« %s » est un répertoire" -#: commands/copy.c:2144 +#: commands/copy.c:2145 #, c-format msgid "COPY %s, line %d, column %s" msgstr "COPY %s, ligne %d, colonne %s" -#: commands/copy.c:2148 commands/copy.c:2195 +#: commands/copy.c:2149 commands/copy.c:2196 #, c-format msgid "COPY %s, line %d" msgstr "COPY %s, ligne %d" -#: commands/copy.c:2159 +#: commands/copy.c:2160 #, c-format msgid "COPY %s, line %d, column %s: \"%s\"" msgstr "COPY %s, ligne %d, colonne %s : « %s »" -#: commands/copy.c:2167 +#: 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" -#: commands/copy.c:2189 +#: commands/copy.c:2190 #, c-format msgid "COPY %s, line %d: \"%s\"" msgstr "COPY %s, ligne %d : « %s »" -#: commands/copy.c:2273 +#: commands/copy.c:2274 #, c-format msgid "cannot copy to view \"%s\"" msgstr "ne peut pas copier vers la vue « %s »" -#: commands/copy.c:2278 +#: 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 »" -#: commands/copy.c:2283 +#: commands/copy.c:2284 #, c-format msgid "cannot copy to foreign table \"%s\"" msgstr "ne peut pas copier vers la table distante « %s »" -#: commands/copy.c:2288 +#: commands/copy.c:2289 #, c-format msgid "cannot copy to sequence \"%s\"" msgstr "ne peut pas copier vers la séquence « %s »" -#: commands/copy.c:2293 +#: 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" -#: commands/copy.c:2356 +#: 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" -#: commands/copy.c:2362 +#: 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" -#: commands/copy.c:2865 +#: 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:2870 +#: commands/copy.c:2871 #, c-format msgid "invalid COPY file header (missing flags)" msgstr "en-tête du fichier COPY invalide (options manquantes)" -#: commands/copy.c:2876 +#: 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" -#: commands/copy.c:2882 +#: commands/copy.c:2883 #, c-format msgid "invalid COPY file header (missing length)" msgstr "en-tête du fichier COPY invalide (longueur manquante)" -#: commands/copy.c:2889 +#: commands/copy.c:2890 #, c-format msgid "invalid COPY file header (wrong length)" msgstr "en-tête du fichier COPY invalide (mauvaise longueur)" -#: commands/copy.c:3022 commands/copy.c:3729 commands/copy.c:3959 +#: 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" -#: commands/copy.c:3032 +#: commands/copy.c:3033 #, c-format msgid "missing data for OID column" msgstr "données manquantes pour la colonne OID" -#: commands/copy.c:3038 +#: commands/copy.c:3039 #, c-format msgid "null OID in COPY data" msgstr "OID NULL dans les données du COPY" -#: commands/copy.c:3048 commands/copy.c:3171 +#: 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" -#: commands/copy.c:3063 +#: commands/copy.c:3064 #, c-format msgid "missing data for column \"%s\"" msgstr "données manquantes pour la colonne « %s »" -#: commands/copy.c:3146 +#: 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" -#: commands/copy.c:3153 +#: 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:3493 commands/copy.c:3510 +#: 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" -#: commands/copy.c:3494 commands/copy.c:3511 +#: 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" -#: commands/copy.c:3496 commands/copy.c:3513 +#: 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." -#: commands/copy.c:3497 commands/copy.c:3514 +#: 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." -#: commands/copy.c:3526 +#: commands/copy.c:3527 #, c-format msgid "literal newline found in data" msgstr "retour à la ligne trouvé dans les données" -#: commands/copy.c:3527 +#: commands/copy.c:3528 #, c-format msgid "unquoted newline found in data" msgstr "retour à la ligne trouvé dans les données" -#: commands/copy.c:3529 +#: commands/copy.c:3530 #, c-format msgid "Use \"\\n\" to represent newline." msgstr "Utilisez « \\n » pour représenter un retour à la ligne." -#: commands/copy.c:3530 +#: 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." -#: commands/copy.c:3576 commands/copy.c:3612 +#: 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" -#: commands/copy.c:3585 commands/copy.c:3601 +#: 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:4043 +#: commands/copy.c:4044 #, c-format msgid "unterminated CSV quoted field" msgstr "champ CSV entre guillemets non terminé" -#: commands/copy.c:4120 commands/copy.c:4139 +#: 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" -#: commands/copy.c:4129 +#: commands/copy.c:4130 #, c-format msgid "invalid field size" msgstr "taille du champ invalide" -#: commands/copy.c:4152 +#: commands/copy.c:4153 #, c-format msgid "incorrect binary data format" msgstr "format de données binaires incorrect" -#: commands/copy.c:4463 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" -#: commands/copy.c:4470 commands/tablecmds.c:1489 commands/trigger.c:651 parser/parse_target.c:967 parser/parse_target.c:978 +#: 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" @@ -6130,7 +5890,7 @@ msgstr "l'argument de %s doit être un nom de type" msgid "invalid argument for %s: \"%s\"" msgstr "argument invalide pour %s : « %s »" -#: commands/dropcmds.c:112 commands/functioncmds.c:1203 utils/adt/ruleutils.c:2080 +#: 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" @@ -6140,17 +5900,17 @@ msgstr "« %s » est une fonction d'agrégat" msgid "Use DROP AGGREGATE to drop aggregate functions." 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:11427 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" -#: 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" -#: 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" @@ -6357,239 +6117,239 @@ msgstr "l'option BUFFERS d'EXPLAIN nécessite ANALYZE" msgid "EXPLAIN option TIMING requires 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" -#: 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 »" -#: 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." -#: 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 « -- »." -#: 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 (« - »)." -#: 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." -#: 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 »" -#: 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." -#: 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 « -- »." -#: 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." -#: 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" -#: 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" "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" -#: 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" -#: 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 »" -#: 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" -#: 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" "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 »" -#: 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." -#: 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 »" -#: 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." -#: 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 »" -#: 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" -#: 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 »" -#: 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 »" -#: 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 »" -#: commands/extension.c:1440 +#: commands/extension.c:1444 #, c-format msgid "installing required extension \"%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" -#: 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." -#: 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" -#: commands/extension.c:1541 +#: commands/extension.c:1545 #, c-format msgid "extension \"%s\" already exists" 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é" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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é" -#: 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" -#: 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" "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 »" -#: commands/extension.c:3114 +#: commands/extension.c:3138 #, c-format msgid "file \"%s\" is too large" msgstr "le fichier « %s » est trop gros" @@ -6814,12 +6574,12 @@ msgstr "l'attribut « %s » non reconnu de la fonction a été ignoré" msgid "only one AS item needed for language \"%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" -#: 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." @@ -6844,191 +6604,191 @@ msgstr "le type de résultat de la fonction doit être spécifié" 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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à" -#: 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" -#: 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" -#: 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" -#: 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 »" -#: 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" -#: 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" -#: 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 »" -#: 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" -#: 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à" -#: 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" -#: 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 »" -#: commands/functioncmds.c:2106 +#: commands/functioncmds.c:2126 #, c-format msgid "no inline code specified" 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" @@ -7053,147 +6813,147 @@ msgstr "ne peut pas créer un index sur la table distante « %s »" 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" -#: commands/indexcmds.c:454 commands/tablecmds.c:545 commands/tablecmds.c:9636 +#: 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" -#: 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 » " -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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 »" -#: 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" -#: 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" -#: 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" "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" -#: 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" -#: 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" -#: 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." -#: 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 »" -#: 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'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" -#: 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" -#: 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 »" -#: 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." -#: 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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" @@ -7442,7 +7202,7 @@ msgstr "" msgid "operator attribute \"%s\" cannot be changed" 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:11983 commands/tablecmds.c:12018 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" @@ -7492,7 +7252,7 @@ msgstr "seule une expression USING est autorisée pour SELECT, DELETE" msgid "invalid cursor name: must not be empty" 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" @@ -7502,7 +7262,7 @@ msgstr "le curseur « %s » n'existe pas" msgid "invalid statement name: must not be empty" 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" @@ -7700,275 +7460,275 @@ msgstr "la séquence doit avoir le même propriétaire que la table avec laquell 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" -#: commands/tablecmds.c:215 +#: commands/tablecmds.c:216 #, c-format msgid "table \"%s\" does not exist" 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" -#: 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" -#: 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" -#: 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." -#: commands/tablecmds.c:227 +#: commands/tablecmds.c:228 #, c-format msgid "view \"%s\" does not exist" 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" -#: 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" -#: 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" -#: 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." -#: 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" -#: 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" -#: 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" -#: 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:8525 commands/tablecmds.c:11244 +#: 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" -#: 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" -#: 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" -#: 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é" -#: 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 »" -#: 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" -#: commands/tablecmds.c:1535 commands/tablecmds.c:10092 +#: 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 »" -#: commands/tablecmds.c:1543 commands/tablecmds.c:10100 +#: 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" -#: commands/tablecmds.c:1559 commands/tablecmds.c:10134 +#: 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" -#: 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 »" -#: 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" -#: 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" -#: 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 »" -#: 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" -#: 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" -#: 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 »." -#: 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" -#: 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" -#: 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." -#: 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" -#: 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" -#: 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" -#: 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" -#: 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." -#: 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" -#: 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" -#: 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" -#: 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" -#: 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 »" -#: 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 »" -#: 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" -#: 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 »" #. 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 "" @@ -7976,652 +7736,657 @@ msgstr "" "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" -#: 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 »" -#: 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" -#: 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" -#: commands/tablecmds.c:4068 +#: commands/tablecmds.c:4069 #, c-format msgid "rewriting 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 »" -#: commands/tablecmds.c:4186 +#: commands/tablecmds.c:4187 #, c-format msgid "column \"%s\" contains null values" msgstr "la colonne « %s » contient des valeurs NULL" -#: commands/tablecmds.c:4201 commands/tablecmds.c:7384 +#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: commands/tablecmds.c:4383 +#: commands/tablecmds.c:4384 #, c-format msgid "\"%s\" is of the wrong 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" -#: 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" "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" "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" -#: 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" -#: commands/tablecmds.c:4758 commands/tablecmds.c:10293 +#: 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 »" -#: commands/tablecmds.c:4764 commands/tablecmds.c:10300 +#: 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 »" -#: 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 »" -#: 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 »" -#: 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" -#: 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" -#: 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à" -#: 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:7923 commands/tablecmds.c:8548 +#: 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 »" -#: 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" -#: 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" -#: commands/tablecmds.c:5615 +#: commands/tablecmds.c:5616 #, c-format msgid "invalid storage type \"%s\"" 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" -#: 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" -#: 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" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" "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" "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" -#: 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" -#: 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." -#: commands/tablecmds.c:6691 commands/tablecmds.c:6859 commands/tablecmds.c:7762 commands/tablecmds.c:7818 +#: 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" -#: 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" -#: commands/tablecmds.c:6866 +#: 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" -#: commands/tablecmds.c:6934 +#: 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" -#: commands/tablecmds.c:7003 +#: 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" -#: commands/tablecmds.c:7008 +#: 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" -#: commands/tablecmds.c:7073 +#: 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" -#: commands/tablecmds.c:7090 +#: 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" -#: commands/tablecmds.c:7155 +#: 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" -#: commands/tablecmds.c:7249 +#: 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 »" -#: commands/tablecmds.c:7254 +#: 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" -#: commands/tablecmds.c:7417 +#: commands/tablecmds.c:7419 #, c-format msgid "validating foreign key constraint \"%s\"" msgstr "validation de la contraintes de clé étrangère « %s »" -#: commands/tablecmds.c:7716 +#: 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 »" -#: commands/tablecmds.c:7768 +#: 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" -#: commands/tablecmds.c:7907 +#: 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" -#: commands/tablecmds.c:7930 +#: commands/tablecmds.c:7932 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "ne peut pas modifier la colonne héritée « %s »" -#: commands/tablecmds.c:7979 +#: 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" -#: commands/tablecmds.c:7982 +#: 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:7986 +#: 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" #. translator: USING is SQL, don't translate it -#: commands/tablecmds.c:7989 +#: 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\"." -#: commands/tablecmds.c:8042 +#: 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" -#: commands/tablecmds.c:8129 +#: commands/tablecmds.c:8188 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "ne peut pas modifier la colonne « %s » deux fois" -#: commands/tablecmds.c:8165 +#: 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" "type %s automatiquement" -#: commands/tablecmds.c:8291 +#: 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" -#: commands/tablecmds.c:8292 commands/tablecmds.c:8311 commands/tablecmds.c:8329 +#: 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 »" -#: commands/tablecmds.c:8310 +#: 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" -#: commands/tablecmds.c:8328 +#: 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" -#: commands/tablecmds.c:8993 +#: 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 »" -#: commands/tablecmds.c:8995 +#: 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." -#: commands/tablecmds.c:9011 +#: 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 »" -#: commands/tablecmds.c:9013 commands/tablecmds.c:11446 +#: 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 »." -#: commands/tablecmds.c:9025 commands/tablecmds.c:12093 +#: commands/tablecmds.c:9084 commands/tablecmds.c:12191 #, c-format msgid "Use ALTER TYPE instead." msgstr "Utilisez ALTER TYPE à la place." -#: commands/tablecmds.c:9034 +#: 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" -#: commands/tablecmds.c:9377 +#: 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:9450 +#: 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" -#: commands/tablecmds.c:9483 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" -#: commands/tablecmds.c:9629 +#: commands/tablecmds.c:9688 #, c-format msgid "cannot move system relation \"%s\"" msgstr "ne peut pas déplacer la colonne système « %s »" -#: commands/tablecmds.c:9645 +#: 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" -#: commands/tablecmds.c:9782 +#: 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" -#: commands/tablecmds.c:9794 +#: 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" -#: commands/tablecmds.c:9885 +#: 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" -#: commands/tablecmds.c:9901 +#: commands/tablecmds.c:9960 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr "aucune relation correspondante trouvée dans le tablespace « %s »" -#: commands/tablecmds.c:9975 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:10057 +#: 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" -#: commands/tablecmds.c:10107 +#: 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" -#: commands/tablecmds.c:10161 +#: commands/tablecmds.c:10220 #, c-format msgid "circular inheritance not allowed" msgstr "héritage circulaire interdit" -#: commands/tablecmds.c:10162 +#: commands/tablecmds.c:10221 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "« %s » est déjà un enfant de « %s »." -#: commands/tablecmds.c:10170 +#: 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" -#: commands/tablecmds.c:10311 +#: 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" -#: commands/tablecmds.c:10327 +#: 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" -#: commands/tablecmds.c:10410 +#: 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 »" -#: commands/tablecmds.c:10418 +#: 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 »" -#: commands/tablecmds.c:10429 +#: 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:10453 +#: commands/tablecmds.c:10545 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "la contrainte « %s » manque à la table enfant" -#: commands/tablecmds.c:10537 +#: 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 »" -#: commands/tablecmds.c:10771 +#: commands/tablecmds.c:10863 #, c-format msgid "typed tables cannot inherit" msgstr "les tables avec type ne peuvent pas hériter d'autres tables" -#: commands/tablecmds.c:10802 +#: commands/tablecmds.c:10894 #, c-format msgid "table is missing column \"%s\"" msgstr "la colonne « %s » manque à la table" -#: commands/tablecmds.c:10812 +#: 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 »." -#: commands/tablecmds.c:10821 +#: 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 »" -#: commands/tablecmds.c:10834 +#: commands/tablecmds.c:10926 #, c-format msgid "table has extra column \"%s\"" msgstr "la table a une colonne supplémentaire « %s »" -#: commands/tablecmds.c:10886 +#: commands/tablecmds.c:10978 #, c-format msgid "\"%s\" is not a typed table" msgstr "« %s » n'est pas une table typée" -#: commands/tablecmds.c:11070 +#: 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" -#: commands/tablecmds.c:11076 +#: 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" -#: commands/tablecmds.c:11082 +#: 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" -#: commands/tablecmds.c:11088 +#: 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" -#: commands/tablecmds.c:11094 +#: 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" -#: commands/tablecmds.c:11115 +#: 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" -#: commands/tablecmds.c:11122 +#: 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" -#: commands/tablecmds.c:11319 +#: 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" -#: commands/tablecmds.c:11378 +#: 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 »" -#: commands/tablecmds.c:11388 +#: 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 »" -#: commands/tablecmds.c:11445 +#: 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" -#: commands/tablecmds.c:11550 +#: 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 »" -#: commands/tablecmds.c:12077 +#: commands/tablecmds.c:12175 #, c-format msgid "\"%s\" is not a composite type" msgstr "« %s » n'est pas un type composite" -#: commands/tablecmds.c:12107 +#: 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" -#: 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" @@ -8714,7 +8479,7 @@ 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 @@ -8897,7 +8662,7 @@ msgstr "la ligne à mettre à jour était déjà modifiée par une opération d 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." -#: commands/trigger.c:2741 executor/execMain.c:2377 executor/nodeLockRows.c:216 executor/nodeModifyTable.c:213 executor/nodeModifyTable.c:692 executor/nodeModifyTable.c:985 executor/nodeModifyTable.c:1151 +#: 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" @@ -9331,7 +9096,7 @@ msgstr "doit être super-utilisateur pour modifier l'attribut bypassrls" msgid "permission denied to create role" msgstr "droit refusé pour créer un rôle" -#: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 gram.y:13615 gram.y:13650 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é" @@ -9557,93 +9322,93 @@ msgstr "" "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" -#: 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" -#: 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" -#: 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" -#: 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" -#: commands/vacuumlazy.c:388 +#: commands/vacuumlazy.c:393 #, c-format msgid "system usage: %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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" "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" -#: 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" -#: 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" -#: commands/vacuumlazy.c:1650 +#: commands/vacuumlazy.c:1655 #, c-format msgid "" "%.0f index row versions were removed.\n" @@ -9654,17 +9419,17 @@ msgstr "" "%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" -#: 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" -#: 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" @@ -9771,8 +9536,8 @@ 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 @@ -9789,54 +9554,54 @@ msgstr "valeur invalide pour l'option « check_option »" msgid "Valid values are \"local\" and \"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" "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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" @@ -9926,32 +9691,32 @@ msgstr "ne peut pas modifier la séquence « %s »" msgid "cannot change TOAST relation \"%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 »" -#: 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." -#: 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 »" -#: 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." -#: 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 »" -#: 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." @@ -10016,7 +9781,7 @@ msgstr "ne peut pas verrouiller les lignes dans la vue « %s »" msgid "cannot lock rows in materialized view \"%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 »" @@ -10026,47 +9791,47 @@ msgstr "ne peut pas verrouiller la table distante « %s »" msgid "cannot lock rows in 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 »" -#: 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" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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 »" -#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3230 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 +#: 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)" @@ -10076,12 +9841,12 @@ msgstr "le nombre de dimensions du tableau (%d) dépasse le maximum autorisé (% msgid "array subscript in assignment must not be 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." @@ -10173,59 +9938,59 @@ msgstr "" "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." -#: 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 »" -#: 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" -#: 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" -#: 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" @@ -10245,90 +10010,95 @@ msgstr "Utilisez la commande REFRESH MATERIALIZED VIEW." 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" +#: 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" #. 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" -#: 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" "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" -#: executor/functions.c:1432 +#: executor/functions.c:1441 #, c-format msgid "SQL function \"%s\" during startup" 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" -#: 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" "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." -#: 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" -#: executor/nodeAgg.c:3023 +#: 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" -#: executor/nodeAgg.c:3068 executor/nodeWindowAgg.c:2318 +#: 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" "transition" -#: executor/nodeAgg.c:3134 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" @@ -10348,7 +10118,7 @@ msgstr "n'a pas pu revenir au début du fichier temporaire de la jointure hâch 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" -#: 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" @@ -10476,7 +10246,7 @@ msgstr "ne peut pas ouvrir la requête %s comme curseur" msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" 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)." @@ -10531,7 +10301,7 @@ msgstr "l'intervalle de fuseau horaire doit être HOUR ou HOUR TO MINUTE" msgid "STDIN/STDOUT not allowed with PROGRAM" msgstr "STDIN/STDOUT non autorisé dans PROGRAM" -#: gram.y:2895 gram.y:2902 gram.y:10295 gram.y:10303 +#: 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" @@ -10541,248 +10311,248 @@ msgstr "GLOBAL est obsolète dans la création de la table temporaire" msgid "MATCH PARTIAL not yet implemented" msgstr "MATCH PARTIAL non implémenté" -#: gram.y:4809 +#: gram.y:4810 msgid "duplicate trigger events specified" msgstr "événements de trigger dupliqués spécifiés" -#: gram.y:4902 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" -#: gram.y:4909 +#: gram.y:4910 #, c-format msgid "conflicting constraint properties" msgstr "propriétés de contrainte en conflit" -#: gram.y:5041 +#: gram.y:5042 #, c-format msgid "CREATE ASSERTION is not yet implemented" msgstr "CREATE ASSERTION n'est pas encore implémenté" -#: gram.y:5057 +#: gram.y:5058 #, c-format msgid "DROP ASSERTION is not yet implemented" msgstr "DROP ASSERTION n'est pas encore implémenté" -#: gram.y:5403 +#: gram.y:5404 #, c-format msgid "RECHECK is no longer required" msgstr "RECHECK n'est plus nécessaire" -#: gram.y:5404 +#: gram.y:5405 #, c-format msgid "Update your data type." msgstr "Mettez à jour votre type de données." -#: gram.y:6983 +#: gram.y:6984 #, c-format msgid "aggregates cannot have output arguments" msgstr "les agrégats ne peuvent pas avoir d'arguments en sortie" -#: gram.y:7302 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:7303 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." -#: gram.y:8853 gram.y:8871 +#: 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" -#: gram.y:9389 +#: gram.y:9390 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "option « %s » de la commande VACUUM non reconnue" -#: gram.y:9887 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:10403 +#: gram.y:10404 #, c-format msgid "LIMIT #,# syntax is not supported" msgstr "la syntaxe LIMIT #,# n'est pas supportée" -#: gram.y:10404 +#: gram.y:10405 #, c-format msgid "Use separate LIMIT and OFFSET clauses." msgstr "Utilisez les clauses séparées LIMIT et OFFSET." -#: gram.y:10667 gram.y:10692 +#: 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:10668 gram.y:10693 +#: gram.y:10669 gram.y:10694 #, c-format msgid "For example, FROM (VALUES ...) [AS] foo." msgstr "Par exemple, FROM (VALUES ...) [AS] quelquechose." -#: gram.y:10673 gram.y:10698 +#: 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" -#: gram.y:10674 gram.y:10699 +#: gram.y:10675 gram.y:10700 #, c-format msgid "For example, FROM (SELECT ...) [AS] foo." msgstr "Par exemple, FROM (SELECT...) [AS] quelquechose." -#: gram.y:11273 +#: 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" -#: gram.y:11282 +#: 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" -#: gram.y:11786 +#: 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" -#: gram.y:11791 +#: 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" -#: gram.y:11966 +#: gram.y:11967 #, c-format msgid "UNIQUE predicate is not yet implemented" msgstr "prédicat UNIQUE non implémenté" -#: gram.y:12296 +#: 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:12301 +#: gram.y:12306 #, c-format msgid "cannot use DISTINCT with WITHIN GROUP" msgstr "ne peut pas utiliser DISTINCT avec WITHIN GROUP" -#: gram.y:12306 +#: gram.y:12311 #, c-format msgid "cannot use VARIADIC with WITHIN GROUP" msgstr "ne peut pas utiliser VARIADIC avec WITHIN GROUP" -#: gram.y:12812 +#: gram.y:12817 #, c-format msgid "RANGE PRECEDING is only supported with UNBOUNDED" msgstr "RANGE PRECEDING est seulement supporté avec UNBOUNDED" -#: gram.y:12818 +#: gram.y:12823 #, c-format msgid "RANGE FOLLOWING is only supported with UNBOUNDED" msgstr "RANGE FOLLOWING est seulement supporté avec UNBOUNDED" -#: gram.y:12845 gram.y:12868 +#: 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" -#: gram.y:12850 +#: 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" -#: gram.y:12873 +#: gram.y:12878 #, c-format msgid "frame end cannot be UNBOUNDED PRECEDING" msgstr "la fin du frame ne peut pas être UNBOUNDED PRECEDING" -#: gram.y:12879 +#: 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" -#: gram.y:12886 +#: 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" -#: gram.y:13551 +#: 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" -#: gram.y:13557 +#: 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:13621 gram.y:13627 +#: 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" -#: gram.y:14249 gram.y:14438 +#: gram.y:14254 gram.y:14443 msgid "improper use of \"*\"" msgstr "mauvaise utilisation de « * »" -#: gram.y:14401 gram.y:14418 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:14502 +#: 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" -#: gram.y:14539 +#: gram.y:14544 #, c-format msgid "multiple ORDER BY clauses not allowed" msgstr "clauses ORDER BY multiples non autorisées" -#: gram.y:14550 +#: gram.y:14555 #, c-format msgid "multiple OFFSET clauses not allowed" msgstr "clauses OFFSET multiples non autorisées" -#: gram.y:14559 +#: gram.y:14564 #, c-format msgid "multiple LIMIT clauses not allowed" msgstr "clauses LIMIT multiples non autorisées" -#: gram.y:14568 +#: gram.y:14573 #, c-format msgid "multiple WITH clauses not allowed" msgstr "clauses WITH multiples non autorisées" -#: gram.y:14760 +#: 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" -#: gram.y:14861 +#: gram.y:14866 #, c-format msgid "multiple COLLATE clauses not allowed" msgstr "clauses COLLATE multiples non autorisées" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14899 gram.y:14912 +#: 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" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14925 +#: 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" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14938 +#: 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" @@ -11149,7 +10919,7 @@ msgstr "n'a pas pu obtenir l'authentification de l'autre : %m" 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:1826 libpq/auth.c:2152 libpq/auth.c:2512 +#: 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" @@ -11297,99 +11067,99 @@ msgstr "" "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:2468 +#: libpq/auth.c:2471 #, c-format msgid "RADIUS server not specified" msgstr "serveur RADIUS non précisé" -#: libpq/auth.c:2475 +#: libpq/auth.c:2478 #, c-format msgid "RADIUS secret not specified" msgstr "secret RADIUS non précisé" -#: libpq/auth.c:2491 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" -#: libpq/auth.c:2519 +#: 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" -#: libpq/auth.c:2531 +#: 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" -#: libpq/auth.c:2569 +#: 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" -#: libpq/auth.c:2594 +#: libpq/auth.c:2597 #, c-format msgid "could not create RADIUS socket: %m" msgstr "n'a pas pu créer le socket RADIUS : %m" -#: libpq/auth.c:2615 +#: 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" -#: libpq/auth.c:2625 +#: 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:2658 libpq/auth.c:2683 +#: 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" -#: libpq/auth.c:2676 +#: 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" -#: libpq/auth.c:2705 +#: libpq/auth.c:2708 #, c-format msgid "could not read RADIUS response: %m" msgstr "n'a pas pu lire la réponse RADIUS : %m" -#: libpq/auth.c:2717 libpq/auth.c:2721 +#: 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" -#: libpq/auth.c:2730 +#: libpq/auth.c:2733 #, c-format msgid "RADIUS response too short: %d" msgstr "réponse RADIUS trop courte : %d" -#: libpq/auth.c:2737 +#: 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)" -#: libpq/auth.c:2745 +#: 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)" -#: libpq/auth.c:2770 +#: 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" -#: libpq/auth.c:2779 +#: libpq/auth.c:2782 #, c-format msgid "RADIUS response has incorrect MD5 signature" msgstr "la réponse RADIUS a une signature MD5 erronée" -#: libpq/auth.c:2796 +#: 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 »" @@ -11563,7 +11333,7 @@ msgstr "n'a pas pu accepter la connexion SSL : fin de fichier détecté" 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" @@ -11578,26 +11348,26 @@ msgstr "le nom commun du certificat SSL contient des NULL" msgid "SSL connection from \"%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é" -#: libpq/be-secure-openssl.c:1084 +#: libpq/be-secure-openssl.c:1092 msgid "no SSL error reported" 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" @@ -11951,76 +11721,76 @@ msgstr "" msgid "could not open usermap file \"%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)" -#: 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" -#: 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" -#: 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é" -#: 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" -#: libpq/pqcomm.c:465 +#: libpq/pqcomm.c:484 #, c-format msgid "setsockopt(SO_REUSEADDR) failed: %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" #. 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" -#: 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." -#: 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 "" @@ -12028,62 +11798,62 @@ msgstr "" "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" -#: libpq/pqcomm.c:623 +#: libpq/pqcomm.c:642 #, c-format msgid "group \"%s\" does not exist" 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" @@ -12457,46 +12227,46 @@ 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" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: optimizer/plan/planner.c:1494 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" -#: optimizer/plan/planner.c:3823 +#: optimizer/plan/planner.c:3809 #, c-format msgid "could not implement GROUP BY" msgstr "n'a pas pu implanté GROUP BY" -#: optimizer/plan/planner.c:3824 optimizer/plan/planner.c:4217 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" "alors que les autres supportent seulement le tri." -#: optimizer/plan/planner.c:4216 +#: optimizer/plan/planner.c:4202 #, c-format msgid "could not implement DISTINCT" msgstr "n'a pas pu implanté DISTINCT" -#: optimizer/plan/planner.c:4846 +#: 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:4847 +#: 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" "triables." -#: optimizer/plan/planner.c:4851 +#: 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:4852 +#: 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." @@ -12506,18 +12276,18 @@ msgstr "Les colonnes de tri de la window doivent être d'un type de données tri 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" -#: 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." #. 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" @@ -12527,32 +12297,32 @@ msgstr "n'a pas pu implanté %s" msgid "SQL function \"%s\" during 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" -#: optimizer/util/plancat.c:610 +#: 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" -#: optimizer/util/plancat.c:627 +#: 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é" -#: optimizer/util/plancat.c:678 +#: 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" -#: optimizer/util/plancat.c:783 +#: 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" -#: 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" @@ -12575,181 +12345,181 @@ msgstr "" "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" -#: 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" #. 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" -#: 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" "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." -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" #. 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é" -#: 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)." #. 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é" #. 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é" -#: 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)." -#: 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" -#: 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" -#: 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" -#: 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" #. 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" #. 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" #. 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" #. 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" #. 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" #. 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" #. 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" #. 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" #. 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" #. 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" #. 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" @@ -13039,7 +12809,7 @@ 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 @@ -13449,7 +13219,7 @@ msgstr "FOR UPDATE/SHARE dans une requête récursive n'est pas implémenté" 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" -#: 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" @@ -13474,7 +13244,7 @@ msgstr "notation d'attribut .%s appliqué au type %s, qui n'est pas un type comp msgid "row expansion via \"*\" is not supported here" 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:1120 +#: 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" @@ -13798,7 +13568,7 @@ msgstr "l'indice d'un tableau doit être de type entier" 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" @@ -13808,7 +13578,7 @@ msgstr "l'opérateur n'existe pas : %s" msgid "Use an explicit ordering operator or modify the query." msgstr "Utilisez un opérateur explicite de tri ou modifiez la requête." -#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:794 utils/adt/array_userfuncs.c:932 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" @@ -13862,124 +13632,124 @@ msgstr "op ANY/ALL (tableau) requiert que l'opérateur ne renvoie pas un ensembl msgid "inconsistent types deduced for parameter $%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" -#: 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" -#: 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" -#: 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 »" -#: 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." -#: 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." -#: 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" -#: 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" -#: 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." -#: 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." -#: 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 »" -#: 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 »" -#: 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é" -#: 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" -#: 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" -#: 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" -#: 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 »." -#: 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 »" -#: 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 »." -#: 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." -#: 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 »." @@ -14070,225 +13840,225 @@ msgstr "les modificateurs de type doivent être des constantes ou des identifian msgid "invalid type name \"%s\"" 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é" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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 »" -#: 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" -#: 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" -#: 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." -#: parser/parse_utilcmd.c:1684 +#: parser/parse_utilcmd.c:1669 #, c-format msgid "index \"%s\" contains 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" -#: 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" -#: 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." -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" "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" "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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: parser/parse_utilcmd.c:2730 +#: parser/parse_utilcmd.c:2715 #, c-format msgid "misplaced NOT DEFERRABLE clause" 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" -#: 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" -#: parser/parse_utilcmd.c:2777 +#: parser/parse_utilcmd.c:2762 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" 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)" @@ -14330,17 +14100,17 @@ 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." -#: port/pg_shmem.c:175 port/sysv_shmem.c:175 +#: 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" -#: port/pg_shmem.c:176 port/sysv_shmem.c:176 +#: 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)." -#: port/pg_shmem.c:180 port/sysv_shmem.c:180 +#: 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" @@ -14349,7 +14119,7 @@ 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." -#: port/pg_shmem.c:187 port/sysv_shmem.c:187 +#: 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" @@ -14358,7 +14128,7 @@ 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." -#: port/pg_shmem.c:193 port/sysv_shmem.c:193 +#: 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" @@ -14367,12 +14137,12 @@ 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." -#: port/pg_shmem.c:483 port/sysv_shmem.c:483 +#: 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" -#: port/pg_shmem.c:485 port/sysv_shmem.c:485 +#: 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 "" @@ -14383,12 +14153,12 @@ msgstr "" "valeur du paramètre shared_buffers de PostgreSQL ou le paramètre\n" "max_connections." -#: port/pg_shmem.c:551 port/sysv_shmem.c:551 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" -#: port/pg_shmem.c:646 port/sysv_shmem.c:646 +#: 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" @@ -14512,93 +14282,93 @@ msgstr "n'a pas pu exécuter le processus autovacuum worker : %m" msgid "autovacuum: processing database \"%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 »" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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" -#: postmaster/autovacuum.c:2878 +#: postmaster/autovacuum.c:2900 #, c-format msgid "Enable the \"track_counts\" option." msgstr "Activez l'option « track_counts »." -#: postmaster/bgworker.c:346 postmaster/bgworker.c:745 +#: 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 »" -#: 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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: postmaster/bgworker.c:752 +#: 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" -#: postmaster/bgworker.c:764 +#: 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" -#: postmaster/bgworker.c:779 +#: postmaster/bgworker.c:796 #, c-format msgid "too many background workers" msgstr "trop de processus en tâche de fond" -#: postmaster/bgworker.c:780 +#: 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" -#: postmaster/bgworker.c:784 +#: 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 »." @@ -14671,7 +14441,7 @@ msgstr "La commande d'archivage qui a échoué était : %s" msgid "archive command was terminated by exception 0x%X" msgstr "la commande d'archivage a été terminée par l'exception 0x%X" -#: postmaster/pgarch.c:598 postmaster/postmaster.c:3491 +#: 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 "" @@ -14703,313 +14473,313 @@ msgstr "journal des transactions archivé « %s »" 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" -#: postmaster/pgstat.c:355 +#: postmaster/pgstat.c:358 #, c-format msgid "could not resolve \"localhost\": %s" msgstr "n'a pas pu résoudre « localhost » : %s" -#: postmaster/pgstat.c:378 +#: 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" -#: postmaster/pgstat.c:387 +#: 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" -#: postmaster/pgstat.c:399 +#: 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" -#: postmaster/pgstat.c:410 +#: 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" -#: postmaster/pgstat.c:426 +#: 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" -#: postmaster/pgstat.c:447 +#: 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" "statistiques : %m" -#: postmaster/pgstat.c:473 +#: 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" -#: postmaster/pgstat.c:488 +#: 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" "statistiques : %m" -#: postmaster/pgstat.c:503 +#: 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" "statistiques : %m" -#: postmaster/pgstat.c:513 +#: 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" "statistiques" -#: postmaster/pgstat.c:536 +#: 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" "non bloquant : %m" -#: postmaster/pgstat.c:546 +#: 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" "fonctionnel" -#: postmaster/pgstat.c:693 +#: 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" "statistiques : %m" -#: postmaster/pgstat.c:1261 +#: postmaster/pgstat.c:1293 #, c-format msgid "unrecognized reset target: \"%s\"" msgstr "cible reset non reconnu : « %s »" -#: postmaster/pgstat.c:1262 +#: postmaster/pgstat.c:1294 #, c-format msgid "Target must be \"archiver\" or \"bgwriter\"." msgstr "La cible doit être « archiver » ou « bgwriter »." -#: postmaster/pgstat.c:3587 +#: 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:3918 postmaster/pgstat.c:4075 +#: 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" -#: postmaster/pgstat.c:3985 postmaster/pgstat.c:4120 +#: 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" -#: postmaster/pgstat.c:3994 postmaster/pgstat.c:4129 +#: 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" -#: postmaster/pgstat.c:4002 postmaster/pgstat.c:4137 +#: 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" -#: postmaster/pgstat.c:4226 postmaster/pgstat.c:4411 postmaster/pgstat.c:4564 +#: 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" -#: 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 +#: 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" -#: postmaster/pgstat.c:4776 +#: 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" -#: postmaster/pgstat.c:5103 +#: 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" "--- 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" -#: 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" -#: postmaster/postmaster.c:821 +#: postmaster/postmaster.c:839 #, c-format msgid "%s: invalid argument: \"%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" -#: 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" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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" -#: 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 »" -#: 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" -#: postmaster/postmaster.c:1111 +#: postmaster/postmaster.c:1129 #, c-format msgid "no socket created for listening" 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" -#: 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" -#: 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" -#: postmaster/postmaster.c:1234 +#: postmaster/postmaster.c:1252 #, c-format msgid "ending log output to 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 »." -#: 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" -#: 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" -#: 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é." -#: 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" -#: 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" -#: 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" -#: 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" -#: 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." -#: 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" "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)." -#: postmaster/postmaster.c:1500 +#: postmaster/postmaster.c:1518 #, c-format msgid "" "%s: could not find the database system\n" @@ -15020,376 +14790,386 @@ msgstr "" "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" -#: postmaster/postmaster.c:1828 +#: 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" -#: postmaster/postmaster.c:1906 postmaster/postmaster.c:1937 +#: postmaster/postmaster.c:1928 postmaster/postmaster.c:1959 #, c-format msgid "incomplete startup packet" msgstr "paquet de démarrage incomplet" -#: postmaster/postmaster.c:1918 +#: postmaster/postmaster.c:1940 #, c-format msgid "invalid length of startup packet" msgstr "longueur invalide du paquet de démarrage" -#: postmaster/postmaster.c:1976 +#: 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" -#: postmaster/postmaster.c:2005 +#: 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" "%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 +#: 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 »" -#: postmaster/postmaster.c:2071 +#: 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 »." -#: postmaster/postmaster.c:2091 +#: 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" "dernier octet" -#: postmaster/postmaster.c:2119 +#: 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" -#: postmaster/postmaster.c:2178 +#: postmaster/postmaster.c:2200 #, c-format msgid "the database system is starting up" msgstr "le système de bases de données se lance" -#: postmaster/postmaster.c:2183 +#: 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" -#: postmaster/postmaster.c:2188 +#: 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" -#: postmaster/postmaster.c:2193 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" -#: postmaster/postmaster.c:2255 +#: 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" -#: postmaster/postmaster.c:2263 +#: 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" -#: postmaster/postmaster.c:2483 +#: postmaster/postmaster.c:2505 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "a reçu SIGHUP, rechargement des fichiers de configuration" -#: postmaster/postmaster.c:2508 +#: postmaster/postmaster.c:2530 #, c-format msgid "pg_hba.conf not reloaded" msgstr "pg_hba.conf non lu" -#: postmaster/postmaster.c:2512 +#: postmaster/postmaster.c:2534 #, c-format msgid "pg_ident.conf not reloaded" msgstr "pg_ident.conf non rechargé" -#: postmaster/postmaster.c:2553 +#: postmaster/postmaster.c:2575 #, c-format msgid "received smart shutdown request" msgstr "a reçu une demande d'arrêt intelligent" -#: postmaster/postmaster.c:2608 +#: postmaster/postmaster.c:2630 #, c-format msgid "received fast shutdown request" msgstr "a reçu une demande d'arrêt rapide" -#: postmaster/postmaster.c:2638 +#: postmaster/postmaster.c:2660 #, c-format msgid "aborting any active transactions" msgstr "annulation des transactions actives" -#: postmaster/postmaster.c:2672 +#: postmaster/postmaster.c:2694 #, c-format msgid "received immediate shutdown request" msgstr "a reçu une demande d'arrêt immédiat" -#: postmaster/postmaster.c:2736 +#: postmaster/postmaster.c:2758 #, c-format msgid "shutdown at recovery target" msgstr "arrêt sur la cible de restauration" -#: postmaster/postmaster.c:2752 postmaster/postmaster.c:2775 +#: postmaster/postmaster.c:2774 postmaster/postmaster.c:2797 msgid "startup process" msgstr "processus de lancement" -#: postmaster/postmaster.c:2755 +#: 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" -#: postmaster/postmaster.c:2816 +#: 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" -#: postmaster/postmaster.c:2835 +#: postmaster/postmaster.c:2857 msgid "background writer process" msgstr "processus d'écriture en tâche de fond" -#: postmaster/postmaster.c:2889 +#: postmaster/postmaster.c:2911 msgid "checkpointer process" msgstr "processus checkpointer" -#: postmaster/postmaster.c:2905 +#: postmaster/postmaster.c:2927 msgid "WAL writer process" msgstr "processus d'écriture des journaux de transaction" -#: postmaster/postmaster.c:2919 +#: postmaster/postmaster.c:2942 msgid "WAL receiver process" msgstr "processus de réception des journaux de transaction" -#: postmaster/postmaster.c:2934 +#: postmaster/postmaster.c:2957 msgid "autovacuum launcher process" msgstr "processus de l'autovacuum" -#: postmaster/postmaster.c:2949 +#: postmaster/postmaster.c:2972 msgid "archiver process" msgstr "processus d'archivage" -#: postmaster/postmaster.c:2965 +#: postmaster/postmaster.c:2988 msgid "statistics collector process" msgstr "processus de récupération des statistiques" -#: postmaster/postmaster.c:2979 +#: postmaster/postmaster.c:3002 msgid "system logger process" msgstr "processus des journaux applicatifs" -#: postmaster/postmaster.c:3041 +#: postmaster/postmaster.c:3064 msgid "worker process" msgstr "processus de travail" -#: postmaster/postmaster.c:3124 postmaster/postmaster.c:3144 postmaster/postmaster.c:3151 postmaster/postmaster.c:3169 +#: 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:3223 +#: postmaster/postmaster.c:3246 #, c-format msgid "terminating any other active server processes" 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:3479 +#: 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:3481 postmaster/postmaster.c:3492 postmaster/postmaster.c:3503 postmaster/postmaster.c:3512 postmaster/postmaster.c:3522 +#: 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" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3489 +#: 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" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3499 +#: 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" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3510 +#: 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" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3520 +#: 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" -#: postmaster/postmaster.c:3707 +#: 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" -#: postmaster/postmaster.c:3747 +#: postmaster/postmaster.c:3770 #, c-format msgid "all server processes terminated; reinitializing" msgstr "tous les processus serveur se sont arrêtés, réinitialisation" -#: postmaster/postmaster.c:3959 +#: 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:4001 +#: 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:4115 +#: postmaster/postmaster.c:4138 #, c-format msgid "connection received: host=%s port=%s" msgstr "connexion reçue : hôte=%s port=%s" -#: postmaster/postmaster.c:4120 +#: postmaster/postmaster.c:4143 #, c-format msgid "connection received: host=%s" msgstr "connexion reçue : hôte=%s" -#: postmaster/postmaster.c:4403 +#: 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" -#: postmaster/postmaster.c:4947 +#: 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: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" -#: postmaster/postmaster.c:5238 +#: 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" -#: postmaster/postmaster.c:5242 +#: 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" "fond : %m" -#: postmaster/postmaster.c:5246 +#: postmaster/postmaster.c:5275 #, c-format msgid "could not fork checkpointer process: %m" msgstr "n'a pas pu créer le processus checkpointer : %m" -#: postmaster/postmaster.c:5250 +#: 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" "transaction : %m" -#: postmaster/postmaster.c:5254 +#: 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" "transactions : %m" -#: postmaster/postmaster.c:5258 +#: 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:5420 postmaster/postmaster.c:5443 +#: 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" -#: postmaster/postmaster.c:5427 postmaster/postmaster.c:5450 +#: 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" -#: postmaster/postmaster.c:5502 +#: 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 »" -#: postmaster/postmaster.c:5513 +#: 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" -#: postmaster/postmaster.c:5901 +#: 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:5933 +#: 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" -#: postmaster/postmaster.c:5962 +#: 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" -#: postmaster/postmaster.c:5969 +#: 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" -#: postmaster/postmaster.c:5978 +#: 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" -#: postmaster/postmaster.c:5995 +#: 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" "d'erreur %lu\n" -#: postmaster/postmaster.c:6004 +#: 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" "d'erreur %lu\n" -#: postmaster/postmaster.c:6011 +#: 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" "code d'erreur %lu\n" -#: postmaster/postmaster.c:6172 +#: 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:6177 +#: 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" @@ -15612,17 +15392,17 @@ 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" -#: 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" -#: 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" @@ -15642,37 +15422,37 @@ msgstr "le décodage logique requiert une connexion à une base" msgid "logical decoding cannot be used while in recovery" 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" -#: 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" -#: 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" -#: 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 »" -#: 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" -#: 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" -#: 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" @@ -15739,113 +15519,116 @@ msgstr "n'a pas pu trouver d'OID d'origine de réplication libre" 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" -#: 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)" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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à" -#: 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" -#: 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" -#: replication/logical/reorderbuffer.c:2330 +#: 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" -#: replication/logical/reorderbuffer.c:2426 replication/logical/reorderbuffer.c:2446 +#: 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" -#: replication/logical/reorderbuffer.c:2430 replication/logical/reorderbuffer.c:2450 +#: 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" "sur %u" -#: replication/logical/reorderbuffer.c:3106 +#: 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" -#: 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" -#: 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" -#: 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" -#: 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 "En attente de la fin des transactions (approximativement %d) plus anciennes que %u." + +#: replication/logical/snapbuild.c:1309 +#, c-format +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:1335 #, 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 "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:1727 replication/logical/snapbuild.c:1741 +#: 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" @@ -15860,19 +15643,19 @@ msgstr "le fichier d'état snapbuild « %s » a le nombre magique: %u au lieu de 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" -#: 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" -#: 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é." -#: 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 »" @@ -15922,47 +15705,47 @@ msgstr "le slot de réplication « %s » n'existe pas" msgid "replication slot \"%s\" is active for 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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" @@ -15986,23 +15769,28 @@ msgstr "" 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" -#: 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" "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" -#: 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é" +#: 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" @@ -16063,72 +15851,77 @@ msgstr "récupération du fichier historique pour la timeline %u à partir du se 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" -#: 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" -#: 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" -#: 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." -#: 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" -#: 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" -#: 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" -#: 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" -#: replication/walsender.c:1500 +#: replication/walsender.c:1549 #, c-format msgid "unexpected message type \"%c\"" 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" -#: 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" -#: replication/walsender.c:1980 +#: replication/walsender.c:2022 #, c-format msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" msgstr "" @@ -16348,165 +16141,165 @@ msgstr "" msgid "cannot have RETURNING lists in multiple rules" 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 »" -#: 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 »" -#: 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 »" -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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." -#: 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 »" -#: 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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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 »" -#: 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" "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 »" -#: 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" "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 »" -#: 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" "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" -#: 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" @@ -16569,7 +16362,7 @@ msgstr "" msgid "invalid Unicode escape character" 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" @@ -16634,34 +16427,34 @@ msgstr "" msgid "invalid Unicode escape value" 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" -#: 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'...')." -#: 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" -#: 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'\\\\'." -#: 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" -#: scan.l:1507 +#: scan.l:1514 #, c-format msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." msgstr "" @@ -16717,22 +16510,22 @@ msgstr "" 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" -#: 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" -#: 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." -#: 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" -#: storage/buffer/bufmgr.c:4295 +#: storage/buffer/bufmgr.c:4312 #, c-format msgid "snapshot too old" msgstr "snapshot trop ancien" @@ -16747,72 +16540,72 @@ msgstr "aucun tampon local vide disponible" msgid "cannot access temporary tables during a parallel operation" 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" -#: 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" -#: 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" -#: 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" -#: storage/file/fd.c:776 +#: storage/file/fd.c:783 #, c-format msgid "getrlimit failed: %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." -#: 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" -#: 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" -#: 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)" -#: 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 »" -#: 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 »" -#: 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 »" -#: 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" @@ -16887,17 +16680,17 @@ msgstr "n'a pas pu créer le segment de mémoire partagée « %s » : %m" msgid "could not duplicate handle for \"%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" -#: storage/ipc/latch.c:999 +#: storage/ipc/latch.c:1065 #, c-format msgid "epoll_wait() failed: %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" @@ -16927,12 +16720,12 @@ msgstr "La taille de l'entrée ShmemIndex est mauvaise pour la structure de donn msgid "requested shared memory size overflows 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" -#: 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." @@ -17181,46 +16974,46 @@ msgstr "" msgid "The transaction might succeed if retried." 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" -#: 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" -#: 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" -#: 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" -#: 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" @@ -17245,12 +17038,12 @@ msgstr "pointeur d'élément corrompu : %u" msgid "corrupted item lengths: total %u, available space %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" -#: 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" @@ -17343,190 +17136,190 @@ msgstr "n'a pas pu ouvrir le fichier « %s » (bloc cible %u) : le segment préc msgid "could not open file \"%s\" (target block %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" "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)" -#: 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" -#: 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)" -#: 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" -#: 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:4314 +#: 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" -#: 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" -#: 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" -#: tcop/postgres.c:1476 +#: tcop/postgres.c:1468 #, c-format msgid "bind %s to %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" -#: 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" -#: 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" "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" -#: 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" -#: 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" -#: 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" -#: tcop/postgres.c:1946 tcop/postgres.c:2031 +#: tcop/postgres.c:1938 tcop/postgres.c:2023 msgid "execute" 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" -#: tcop/postgres.c:2153 +#: tcop/postgres.c:2145 #, c-format msgid "prepare: %s" msgstr "préparation : %s" -#: tcop/postgres.c:2216 +#: tcop/postgres.c:2208 #, c-format msgid "parameters: %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." -#: 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é." -#: 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." -#: 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é." -#: 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" -#: 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 "" @@ -17534,19 +17327,19 @@ msgstr "" "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." -#: tcop/postgres.c:2686 +#: tcop/postgres.c:2678 #, c-format msgid "floating-point exception" 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 "" @@ -17554,62 +17347,62 @@ msgstr "" "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é" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: tcop/postgres.c:2967 +#: tcop/postgres.c:2965 #, c-format msgid "canceling autovacuum task" 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" -#: 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" -#: 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" -#: 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 "" @@ -17617,59 +17410,59 @@ msgstr "" "ê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." -#: 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." -#: 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." -#: 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" -#: tcop/postgres.c:4222 +#: tcop/postgres.c:4208 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "sous-type %d du message CLOSE invalide" -#: tcop/postgres.c:4257 +#: tcop/postgres.c:4243 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "sous-type %d du message DESCRIBE invalide" -#: tcop/postgres.c:4335 +#: 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" -#: tcop/postgres.c:4339 +#: 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" -#: tcop/postgres.c:4509 +#: tcop/postgres.c:4495 #, c-format msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" msgstr "" @@ -17901,7 +17694,7 @@ 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)" @@ -18066,7 +17859,7 @@ msgstr "aclremove n'est plus supporté" msgid "unrecognized privilege type: \"%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" @@ -18076,7 +17869,7 @@ msgstr "la fonction « %s » n'existe pas" msgid "must be member of role \"%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)" @@ -18135,12 +17928,12 @@ msgstr "" "Les tableaux de dimensions différentes ne sont pas compatibles pour\n" "une concaténation." -#: utils/adt/array_userfuncs.c:480 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:737 utils/adt/array_userfuncs.c:888 +#: 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" @@ -18255,7 +18048,7 @@ msgstr "aucune fonction de sortie binaire disponible pour le type %s" msgid "slices of fixed-length arrays not implemented" 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" @@ -18332,42 +18125,32 @@ msgstr "ne peut pas accumuler des tableaux de dimensions différentes" msgid "dimension array or low bound array cannot be 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" -#: 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." -#: 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" -#: 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" -#: 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" @@ -18403,7 +18186,7 @@ msgid "invalid input syntax for 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" @@ -18413,7 +18196,7 @@ msgstr "division par zéro" msgid "\"char\" out of range" 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" @@ -18438,17 +18221,17 @@ msgstr "la valeur « current » pour la date et heure n'est plus supportée" msgid "date out of range: \"%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" @@ -18464,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" @@ -18486,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" @@ -18506,12 +18289,12 @@ msgstr "déplacement du fuseau horaire en dehors des limites" msgid "\"time with time zone\" units \"%s\" not recognized" 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" -#: 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" @@ -18573,7 +18356,7 @@ msgstr "Unité invalide pour une taille : « %s »." 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 »." -#: 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" @@ -19062,7 +18845,7 @@ msgstr "données int2vector invalide" msgid "oidvector has too many elements" 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" @@ -19196,15 +18979,10 @@ msgstr "données JSON, ligne %d : %s%s%s" 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" -#: utils/adt/json.c:2006 -#, 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 +#: 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 "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 @@ -19221,11 +18999,6 @@ msgstr "la liste d'arguments doit avoir un nombre pair d'éléments" 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" - #: utils/adt/json.c:2148 #, c-format msgid "argument %d cannot be null" @@ -19271,11 +19044,6 @@ msgstr "nombre d'arguments invalide : l'objet doit correspond aux paires clé/va 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" - #: utils/adt/jsonb.c:1834 #, c-format msgid "object keys must be strings" @@ -19428,7 +19196,7 @@ msgstr "l'élément du chemin à la position %d n'est pas un entier : « %s »" msgid "levenshtein argument exceeds maximum length of %d characters" 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" @@ -20069,47 +19837,47 @@ msgstr "option invalide de l'expression rationnelle : « %c »" 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 »" -#: 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" -#: 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 +#: 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." -#: 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" -#: utils/adt/regproc.c:1920 +#: utils/adt/regproc.c:1921 #, c-format msgid "expected a right parenthesis" 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" @@ -20251,17 +20019,17 @@ msgstr "" "ne peut pas comparer les types d'enregistrement avec des numéros différents\n" "des colonnes" -#: utils/adt/ruleutils.c:4289 +#: 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é" -#: 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" -#: 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" @@ -20271,127 +20039,127 @@ msgstr "la recherche par expression rationnelle n'est pas supportée sur le type msgid "invalid input syntax for 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" -#: 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" -#: 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 »" -#: 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" -#: 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" -#: 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 »" -#: 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." -#: 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" -#: 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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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 »" -#: 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 »" -#: 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" -#: 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" -#: 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" @@ -20451,17 +20219,17 @@ msgstr "l'opérande est trop long dans tsquery : « %s »" msgid "word is too long in 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 »" -#: utils/adt/tsquery.c:654 utils/adt/tsquery_util.c:375 +#: 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 "" @@ -20508,59 +20276,59 @@ msgstr "le mot est trop long (%ld octets, max %ld octets)" 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)" -#: 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" -#: 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 »" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" @@ -20750,74 +20518,74 @@ msgstr "l'argument de ntile doit être supérieur à zéro" msgid "argument of nth_value must be greater than zero" 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" -#: 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." -#: 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" -#: 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 »." -#: 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 « ?> »." -#: utils/adt/xml.c:831 +#: utils/adt/xml.c:835 #, c-format msgid "xmlvalidate is not implemented" 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" -#: 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" "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 "" @@ -20825,73 +20593,73 @@ msgstr "" "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." -#: 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." -#: 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." -#: utils/adt/xml.c:1750 +#: utils/adt/xml.c:1754 msgid "Parsing XML declaration: '?>' expected." 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" -#: 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." -#: 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" -#: 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 »" @@ -20911,22 +20679,22 @@ msgstr "aucune fonction en entrée disponible pour le type %s" 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" -#: 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" -#: 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é." -#: 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" @@ -21016,81 +20784,81 @@ msgstr "n'a pas pu ré-ouvrir le fichier « %s » comme stdout : %m" 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" -#: 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: " -#: 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 : " -#: 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" -#: 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" @@ -23511,6 +23279,12 @@ msgstr "erreur interne : type de paramètre d'exécution non reconnu\n" 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" +#. 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\"" @@ -23605,7 +23379,7 @@ msgstr "" "@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 »." @@ -23650,17 +23424,17 @@ msgstr "n'a pas pu lire le bloc %ld du fichier temporaire : %m" 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" -#: utils/sort/tuplesort.c:4474 +#: 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 »" -#: utils/sort/tuplesort.c:4476 +#: utils/sort/tuplesort.c:4481 #, c-format msgid "Key %s is duplicated." msgstr "La clé %s est dupliquée." -#: utils/sort/tuplesort.c:4477 +#: utils/sort/tuplesort.c:4482 #, c-format msgid "Duplicate keys exist." msgstr "Des clés dupliquées existent." @@ -23727,869 +23501,1040 @@ msgstr "" 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" -#~ msgid "huge TLB pages not supported on this platform" -#~ msgstr "Huge Pages TLB non supporté sur cette plateforme." +#~ 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 "Only superusers can use untrusted languages." +#~ msgid "brin operator family \"%s\" contains function %s with invalid support number %d" #~ msgstr "" -#~ "Seuls les super-utilisateurs peuvent utiliser des langages qui ne sont pas\n" -#~ "de confiance." +#~ "la famille d'opérateur brin « %s » contient la fonction %s\n" +#~ "avec le numéro de support %d invalide" -#~ msgid "function returning set of rows cannot return null value" +#~ msgid "brin operator family \"%s\" contains function %s with wrong signature for 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 une mauvaise signature pour le numéro de support %d" -#~ msgid "mapped win32 error code %lu to %d" -#~ msgstr "correspondance du code d'erreur win32 %lu en %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." - -#~ msgid "This parameter doesn't do anything." -#~ msgstr "Ce paramètre ne fait rien." +#~ "n'a pas pu créer le fichier de statut de la validation en deux phases nommé\n" +#~ "« %s » : %m" -#~ msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients." +#~ msgid "could not seek in two-phase state file: %m" #~ msgstr "" -#~ "C'est ici uniquement pour ne pas avoir de problèmes avec le SET AUTOCOMMIT\n" -#~ "TO ON des clients 7.3." +#~ "n'a pas pu se déplacer dans le fichier de statut de la validation en deux\n" +#~ "phases : %m" -#~ msgid "Sets the maximum distance in log segments between automatic WAL checkpoints." +#~ msgid "two-phase state file for transaction %u is corrupt" #~ msgstr "" -#~ "Initialise la distance maximale dans les journaux de transaction entre chaque\n" -#~ "point de vérification (checkpoints) des journaux." +#~ "le fichier d'état de la validation en deux phases est corrompu pour la\n" +#~ "transaction %u" -#~ msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys." +#~ msgid "could not fsync 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." - -#~ msgid "SET AUTOCOMMIT TO OFF is no longer supported" -#~ msgstr "SET AUTOCOMMIT TO OFF n'est plus supporté" - -#~ 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 "%s \"%s\": return code %d" -#~ msgstr "%s « %s » : code de retour %d" - -#~ msgid "could not parse transaction log location \"%s\"" -#~ msgstr "n'a pas pu analyser l'emplacement du journal des transactions « %s »" +#~ "n'a pas pu synchroniser sur disque (fsync) le fichier d'état de la\n" +#~ "validation en deux phases nommé « %s » : %m" -#~ msgid "invalid input syntax for transaction log location: \"%s\"" -#~ msgstr "syntaxe invalide en entrée pour l'emplacement du journal de transactions : « %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 "trigger \"%s\" for table \"%s\" does not exist, skipping" -#~ msgstr "le trigger « %s » pour la table « %s » n'existe pas, poursuite du traitement" +#~ 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 "Kerberos 5 authentication failed for user \"%s\"" -#~ msgstr "authentification Kerberos 5 échouée pour l'utilisateur « %s »" +#~ 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 "Kerberos initialization returned error %d" -#~ msgstr "l'initialisation de Kerberos a retourné l'erreur %d" +#~ msgid "ignoring \"%s\" file because no \"%s\" file exists" +#~ msgstr "ignore le fichier « %s » parce que le fichier « %s » n'existe pas" -#~ msgid "Kerberos keytab resolving returned error %d" -#~ msgstr "la résolution keytab de Kerberos a renvoyé l'erreur %d" +#~ 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 "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" -#~ msgstr "sname_to_principal(« %s », « %s ») de Kerberos a renvoyé l'erreur %d" +#~ msgid "must be superuser to switch transaction log files" +#~ msgstr "doit être super-utilisateur pour changer de journal de transactions" -#~ msgid "Kerberos recvauth returned error %d" -#~ msgstr "recvauth de Kerberos a renvoyé l'erreur %d" +#~ msgid "must be superuser to create a restore point" +#~ msgstr "doit être super-utilisateur pour créer un point de restauration" -#~ msgid "Kerberos unparse_name returned error %d" -#~ msgstr "unparse_name de Kerberos a renvoyé l'erreur %d" +#~ msgid "must be superuser to control recovery" +#~ msgstr "doit être super-utilisateur pour contrôler la restauration" -#~ msgid "local user with ID %d does not exist" -#~ msgstr "l'utilisateur local dont l'identifiant est %d n'existe pas" +#~ msgid "invalid record length at %X/%X" +#~ msgstr "longueur invalide de l'enregistrement à %X/%X" -#~ msgid "SSL renegotiation failure" -#~ msgstr "échec lors de la re-négotiation SSL" +#~ msgid "%s is already in schema \"%s\"" +#~ msgstr "%s existe déjà dans le schéma « %s »" -#~ 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 "function \"%s\" must return type \"event_trigger\"" +#~ msgstr "la fonction « %s » doit renvoyer le type « event_trigger »" -#~ msgid "%s: invalid effective UID: %d\n" -#~ msgstr "%s : UID effectif invalide : %d\n" +#~ msgid "function %s must return type \"fdw_handler\"" +#~ msgstr "la fonction %s doit renvoyer le type « fdw_handler »" -#~ 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 "could not reposition held cursor" +#~ msgstr "n'a pas pu repositionner le curseur détenu" -#~ msgid "too many column aliases specified for function %s" -#~ msgstr "trop d'alias de colonnes spécifiées pour la fonction %s" +#~ msgid "function %s must return type \"language_handler\"" +#~ msgstr "la fonction %s doit renvoyer le type « language_handler »" -#~ 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 "function %s must return type \"trigger\"" +#~ msgstr "la fonction %s doit renvoyer le type « trigger »" -#~ 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 "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 "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 "type output function %s must return type \"cstring\"" +#~ msgstr "le type de sortie de la fonction %s doit être « cstring »" -#~ msgid "wrong affix file format for flag" -#~ msgstr "mauvais format de fichier affixe pour le drapeau" +#~ msgid "type send function %s must return type \"bytea\"" +#~ msgstr "la fonction send du type %s doit renvoyer le type « bytea »" -#~ msgid "missing assignment operator" -#~ msgstr "opérateur d'affectation manquant" +#~ msgid "typmod_in function %s must return type \"integer\"" +#~ msgstr "la fonction typmod_in %s doit renvoyer le type « entier »" -#~ msgid "cannot call json_object_keys on an array" -#~ msgstr "ne peut pas appeler json_object_keys sur un tableau" +#~ msgid "Permissions should be u=rw (0600) or less." +#~ msgstr "Les droits devraient être u=rwx (0600) ou inférieures." -#~ msgid "cannot call json_object_keys on a scalar" -#~ msgstr "ne peut pas appeler json_object_keys sur un scalaire" +#~ msgid "function %s must return type \"tsm_handler\"" +#~ msgstr "la fonction %s doit renvoyer le type « tsm_handler »" -#~ msgid "cannot call function with null path elements" -#~ msgstr "ne peut pas appeler une fonction avec des éléments chemins NULL" +#~ msgid "must be superuser to reset statistics counters" +#~ msgstr "doit être super-utilisateur pour réinitialiser les compteurs statistiques" -#~ msgid "cannot call function with empty path elements" -#~ msgstr "ne peut pas appeler une fonction avec des éléments chemins vides" +#~ msgid "socket not open" +#~ msgstr "socket non ouvert" -#~ 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 "multibyte flag character is not allowed" +#~ msgstr "un caractère drapeau multi-octet n'est pas autorisé" -#~ msgid "cannot extract field from a non-object" -#~ msgstr "ne peut pas extraire le chemin à partir d'un non-objet" +#~ msgid "could not format \"path\" value" +#~ msgstr "n'a pas pu formater la valeur « path »" -#~ 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 "invalid input syntax for type box: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type box : « %s »" -#~ msgid "cannot call json_array_elements on a scalar" -#~ msgstr "ne peut pas appeler json_array_elements sur un scalaire" +#~ msgid "invalid input syntax for type line: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type line: « %s »" -#~ 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 "invalid input syntax for type path: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type path : « %s »" -#~ 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 "invalid input syntax for type point: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type point : « %s »" -#~ 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 "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 "CREATE TABLE AS specifies too many column names" -#~ msgstr "CREATE TABLE AS spécifie trop de noms de colonnes" +#~ msgid "Sets the list of known custom variable classes." +#~ msgstr "Initialise la liste des classes variables personnalisées connues." -#~ 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 "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 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 "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 "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 "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 "" +#~ "la définition de la contrainte « %s » pour la contrainte de vérification ne\n" +#~ "correspond pas" + +#~ msgid "relation \"%s.%s\" contains more than \"max_fsm_pages\" pages with useful free space" +#~ msgstr "" +#~ "la relation « %s.%s » contient plus de « max_fsm_pages » pages d'espace\n" +#~ "libre utile" + +#~ msgid "Consider using VACUUM FULL on this relation or increasing the configuration parameter \"max_fsm_pages\"." +#~ msgstr "" +#~ "Pensez à compacter cette relation en utilisant VACUUM FULL ou à augmenter le\n" +#~ "paramètre de configuration « max_fsm_pages »." + +#~ msgid "cannot change number of columns in view" +#~ msgstr "ne peut pas modifier le nombre de colonnes dans la vue" + +#~ msgid "unexpected Kerberos user name received from client (received \"%s\", expected \"%s\")" +#~ msgstr "" +#~ "nom d'utilisateur Kerberos inattendu reçu à partir du client (reçu « %s »,\n" +#~ "attendu « %s »)" + +#~ 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 "Each session can be either \"origin\", \"replica\", or \"local\"." -#~ msgstr "Chaque session peut valoir soit « origin » soit « replica » soit « local »." +#~ 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 "Each SQL transaction has an isolation level, which can be either \"read uncommitted\", \"read committed\", \"repeatable read\", or \"serializable\"." -#~ 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 »." +#~ msgid "unsafe permissions on private key file \"%s\"" +#~ msgstr "droits non sûrs sur le fichier de la clé privée « %s »" -#~ msgid "All SQL statements that cause an error of the specified level or a higher level are logged." +#~ msgid "File must be owned by the database user and must have no permissions for \"group\" or \"other\"." #~ msgstr "" -#~ "Toutes les instructions SQL causant une erreur du niveau spécifié ou d'un\n" -#~ "niveau supérieur sont tracées." +#~ "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 "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 "cannot use authentication method \"crypt\" because password is MD5-encrypted" #~ 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 "Valid values are ON, OFF, and SAFE_ENCODING." -#~ msgstr "Les valeurs valides sont ON, OFF et SAFE_ENCODING." +#~ "n'a pas pu utiliser la méthode d'authentification « crypt » car le mot de\n" +#~ "passe est chiffré avec MD5" -#~ msgid "Sets the maximum number of disk pages for which free space is tracked." -#~ msgstr "" -#~ "Initialise le nombre maximum de pages disque pour lesquelles l'espace libre\n" -#~ "est tracé." +#~ 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 "Sets the maximum number of tables and indexes for which free space is tracked." -#~ msgstr "" -#~ "Initialise le nombre maximum de tables et index pour lesquels l'espace libre\n" -#~ "est tracé." +#~ 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 "Uses the indented output format for EXPLAIN VERBOSE." -#~ msgstr "Utilise le format de sortie indenté pour EXPLAIN VERBOSE." +#~ msgid "cannot use Ident authentication without usermap field" +#~ msgstr "n'a pas pu utiliser l'authentication Ident sans le champ usermap" -#~ msgid "Prints the execution plan to server log." -#~ msgstr "Affiche le plan d'exécution dans les journaux applicatifs du serveur." +#~ msgid "Ident protocol identifies remote user as \"%s\"" +#~ msgstr "le protocole Ident identifie l'utilisateur distant comme « %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 "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 "Prints the parse tree to the server log." -#~ msgstr "Affiche l'arbre d'analyse dans les journaux applicatifs du serveur." +#~ 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 "string is too long for tsvector" -#~ msgstr "la chaîne est trop longue pour un tsvector" +#~ 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" @@ -24602,853 +24547,872 @@ msgstr "ne peut pas importer un snapshot à partir d'une base de données diffé #~ "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 "May" +#~ msgstr "Mai" + +#~ msgid "June" +#~ msgstr "Juin" + +#~ msgid "July" +#~ msgstr "Juillet" + +#~ msgid "August" +#~ msgstr "Août" + +#~ msgid "September" +#~ msgstr "Septembre" + +#~ msgid "October" +#~ msgstr "Octobre" + +#~ msgid "November" +#~ msgstr "Novembre" -#~ msgid "invalid LC_CTYPE setting" -#~ msgstr "paramètre LC_CTYPE invalide" +#~ msgid "December" +#~ msgstr "Décembre" -#~ msgid "invalid LC_COLLATE setting" -#~ msgstr "paramètre LC_COLLATE invalide" +#~ msgid "Jan" +#~ msgstr "Jan" -#~ 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 "Feb" +#~ msgstr "Fév" -#~ 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 "Mar" +#~ msgstr "Mar" -#, fuzzy -#~ msgid "wrong number of array_subscripts" -#~ msgstr "mauvais nombre d'indices du tableau" +#~ msgid "Apr" +#~ msgstr "Avr" -#~ msgid "could not create XPath object" -#~ msgstr "n'a pas pu créer l'objet XPath" +#~ msgid "S:May" +#~ msgstr "S:Mai" -#~ msgid "multiple TRUNCATE events specified" -#~ msgstr "multiples événements TRUNCATE spécifiés" +#~ msgid "Jun" +#~ msgstr "Juin" -#~ msgid "multiple UPDATE events specified" -#~ msgstr "multiples événements UPDATE spécifiés" +#~ msgid "Jul" +#~ msgstr "Juil" -#~ msgid "multiple DELETE events specified" -#~ msgstr "multiples événements DELETE spécifiés" +#~ msgid "Aug" +#~ msgstr "Aoû" -#~ msgid "hurrying in-progress restartpoint" -#~ msgstr "accélération du restartpoint en cours" +#~ msgid "Sep" +#~ msgstr "Sep" -#~ 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 "Oct" +#~ msgstr "Oct" -#~ 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 "Nov" +#~ msgstr "Nov" -#~ msgid "adding missing FROM-clause entry for table \"%s\"" -#~ msgstr "ajout d'une entrée manquante dans FROM (table « %s »)" +#~ msgid "Dec" +#~ msgstr "Déc" -#~ 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 "Sunday" +#~ msgstr "Dimanche" -#~ msgid "unsupported PAM conversation %d/%s" -#~ msgstr "conversation PAM %d/%s non supportée" +#~ msgid "Monday" +#~ msgstr "Lundi" -#~ 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 "Tuesday" +#~ msgstr "Mardi" -#~ 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 "Wednesday" +#~ msgstr "Mercredi" -#~ 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 "Thursday" +#~ msgstr "Jeudi" -#~ 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 "Friday" +#~ msgstr "Vendredi" -#~ 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 "Saturday" +#~ msgstr "Samedi" -#~ 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 "Sun" +#~ msgstr "Dim" -#~ msgid "could not open relation %s: %m" -#~ msgstr "n'a pas pu ouvrir la relation %s : %m" +#~ msgid "Mon" +#~ msgstr "Lun" -#~ msgid "could not extend relation %s: %m" -#~ msgstr "n'a pas pu étendre la relation %s : %m" +#~ msgid "Tue" +#~ msgstr "Mar" -#~ 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 "Wed" +#~ msgstr "Mer" -#~ 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 "Thu" +#~ msgstr "Jeu" -#~ msgid "could not remove relation %s: %m" -#~ msgstr "n'a pas pu supprimer la relation %s : %m" +#~ msgid "Fri" +#~ msgstr "Ven" -#~ 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 "Sat" +#~ msgstr "Sam" -#~ msgid "cannot set session authorization within security-definer function" -#~ msgstr "ne peut pas exécuter SESSION AUTHORIZATION sur la fonction SECURITY DEFINER" +#~ msgid "AM/PM hour must be between 1 and 12" +#~ msgstr "l'heure AM/PM doit être compris entre 1 et 12" -#~ msgid "cannot specify CSV in BINARY mode" -#~ msgstr "ne peut pas spécifier CSV en mode binaire (BINARY)" +#~ msgid "UTF-16 to UTF-8 translation failed: %lu" +#~ msgstr "échec de la conversion d'UTF16 vers UTF8 : %lu" -#~ msgid "invalid role password \"%s\"" -#~ msgstr "mot de passe « %s » de l'utilisateur invalide" +#~ 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 "invalid role name \"%s\"" -#~ msgstr "nom de rôle « %s » invalide" +#~ msgid "query requires full scan, which is not supported by GIN indexes" +#~ msgstr "" +#~ "la requête nécessite un parcours complet, ce qui n'est pas supporté par les\n" +#~ "index GIN" -#~ msgid "invalid database name \"%s\"" -#~ msgstr "nom de base de données « %s » invalide" +#~ 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 "This parameter cannot be changed after server start." -#~ msgstr "Ce paramètre ne peut pas être modifié après le lancement du serveur" +#~ msgid "Use the @@@ operator instead." +#~ msgstr "Utilisez à la place l'opérateur @@@." -#~ msgid "attempted change of parameter \"%s\" ignored" -#~ msgstr "tentative de modification du paramètre « %s » ignoré" +#~ msgid "unexpected delimiter at line %d of thesaurus file \"%s\"" +#~ msgstr "délimiteur inattendu sur la ligne %d du thesaurus « %s »" -#~ msgid "Sets the regular expression \"flavor\"." -#~ msgstr "Initialise l'expression rationnelle « flavor »." +#~ 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 "Automatically adds missing table references to FROM clauses." -#~ msgstr "" -#~ "Ajoute automatiquement les références à la table manquant dans les clauses\n" -#~ "FROM." +#~ 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 "Table contains duplicated values." -#~ msgstr "La table contient des valeurs dupliquées." +#~ msgid "could not remove database directory \"%s\"" +#~ msgstr "n'a pas pu supprimer le répertoire de bases de données « %s »" -#~ 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 "index \"%s\" is not ready" +#~ msgstr "l'index « %s » n'est pas prêt" -#~ msgid "DISTINCT is supported only for single-argument aggregates" -#~ msgstr "DISTINCT est seulement supporté pour les agrégats à un seul argument" +#~ msgid "argument number is out of range" +#~ msgstr "le nombre en argument est en dehors des limites" -#~ 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 "No rows were found in \"%s\"." +#~ msgstr "Aucune ligne trouvée dans « %s »." -#~ msgid "frame start at CURRENT ROW is not implemented" -#~ msgstr "début du frame à CURRENT ROW n'est pas implémenté" +#~ msgid "inconsistent use of year %04d and \"BC\"" +#~ msgstr "utilisation non cohérente de l'année %04d et de « BC »" -#~ msgid "Rebuild the index with REINDEX." -#~ msgstr "Reconstruisez l'index avec REINDEX." +#~ msgid "\"interval\" time zone \"%s\" not valid" +#~ msgstr "le fuseau horaire « %s » n'est pas valide pour le type « interval »" -#~ 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 "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 "" -#~ "%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 already dropped" +#~ msgstr "le « Large Object » %u a déjà été supprimé" -#~ 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 "large object %u was not opened for writing" +#~ msgstr "le « Large Object » %u n'a pas été ouvert en écriture" -#~ 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 "invalid standby query string: %s" +#~ msgstr "chaîne de requête invalide sur le serveur en attente : %s" -#~ msgid "relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- cannot shrink relation" +#~ msgid "terminating walsender process to force cascaded standby to update timeline and reconnect" #~ msgstr "" -#~ "relation « %s », TID %u/%u : DeleteTransactionInProgress %u --- n'a pas pu\n" -#~ "diminuer la taille de la relation" +#~ "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: 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 "invalid standby handshake message type %d" +#~ msgstr "type %d du message de handshake du serveur en attente invalide" -#~ 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 "streaming replication successfully connected to primary" +#~ msgstr "réplication de flux connecté avec succès au serveur principal" -#~ msgid "relation \"%s\" TID %u/%u: XMIN_COMMITTED not set for transaction %u --- cannot shrink relation" +#~ msgid "shutdown requested, aborting active base backup" +#~ msgstr "arrêt demandé, annulation de la sauvegarde active de base" + +#~ 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 "Write-Ahead Log / Streaming Replication" -#~ msgstr "Write-Ahead Log / Réplication en flux" +#~ msgid "cannot call json_populate_recordset on a scalar" +#~ msgstr "ne peut pas appeler json_populate_recordset sur un scalaire" -#~ 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 arrays" +#~ msgstr "ne peut pas appeler json_populate_recordset avec des tableaux imbriqués" -#~ msgid "unable to read symbolic link %s: %m" -#~ msgstr "incapable de lire le lien symbolique %s : %m" +#~ msgid "must call json_populate_recordset on an array of objects" +#~ msgstr "doit appeler json_populate_recordset sur un tableau d'objets" -#~ msgid "index \"%s\" is not a b-tree" -#~ msgstr "l'index « %s » n'est pas un btree" +#~ msgid "cannot call json_populate_recordset with nested objects" +#~ msgstr "ne peut pas appeler json_populate_recordset sur des objets imbriqués" -#~ msgid "ALTER TYPE USING is only supported on plain tables" -#~ msgstr "ALTER TYPE USING est seulement supportés sur les tables standards" +#~ msgid "cannot call json_populate_recordset on an object" +#~ msgstr "ne peut pas appeler json_populate_recordset sur un objet" -#~ msgid "resetting unlogged relations: cleanup %d init %d" -#~ msgstr "réinitialisation des relations non tracées : nettoyage %d initialisation %d" +#~ 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 "%s (%x)" -#~ msgstr "%s (%x)" +#~ 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 "SSPI error %x" -#~ msgstr "erreur SSPI : %x" +#~ msgid "cannot call json_array_elements on a scalar" +#~ msgstr "ne peut pas appeler json_array_elements sur un scalaire" -#~ 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 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 "tablespace %u is not empty" -#~ msgstr "le tablespace %u n'est pas vide" +#~ msgid "cannot extract field from a non-object" +#~ msgstr "ne peut pas extraire le chemin à partir d'un non-objet" -#~ msgid "subquery in WITH cannot have SELECT INTO" -#~ msgstr "la sous-requête du WITH ne peut pas avoir de SELECT INTO" +#~ 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 "subquery cannot have SELECT INTO" -#~ msgstr "la sous-requête ne peut pas avoir de SELECT INTO" +#~ msgid "cannot call function with empty path elements" +#~ msgstr "ne peut pas appeler une fonction avec des éléments chemins vides" -#~ 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 function with null path elements" +#~ msgstr "ne peut pas appeler une fonction avec des éléments chemins NULL" -#~ msgid "DECLARE CURSOR cannot specify INTO" -#~ msgstr "DECLARE CURSOR ne peut pas spécifier INTO" +#~ msgid "cannot call json_object_keys on a scalar" +#~ msgstr "ne peut pas appeler json_object_keys sur un scalaire" -#~ msgid "INSERT ... SELECT cannot specify INTO" -#~ msgstr "INSERT ... SELECT ne peut pas avoir INTO" +#~ msgid "cannot call json_object_keys on an array" +#~ msgstr "ne peut pas appeler json_object_keys sur un tableau" -#~ 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 "missing assignment operator" +#~ msgstr "opérateur d'affectation manquant" -#~ msgid "CREATE TABLE AS cannot specify INTO" -#~ msgstr "CREATE TABLE AS ne peut pas spécifier INTO" +#~ msgid "wrong affix file format for flag" +#~ msgstr "mauvais format de fichier affixe pour le drapeau" -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version affiche la version, puis quitte\n" +#~ 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 " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide, puis quitte\n" +#~ 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 "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 "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 "See server log for details." -#~ msgstr "Voir les journaux applicatifs du serveur pour plus de détails." +#~ msgid "too many column aliases specified for function %s" +#~ msgstr "trop d'alias de colonnes spécifiées pour la fonction %s" -#~ msgid "missing or erroneous pg_hba.conf file" -#~ msgstr "fichier pg_hba.conf manquant ou erroné" +#~ 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 "Certificates will not be checked against revocation list." -#~ msgstr "Les certificats ne seront pas vérifiés avec la liste de révocation." +#~ msgid "%s: invalid effective UID: %d\n" +#~ msgstr "%s : UID effectif invalide : %d\n" -#~ msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" -#~ msgstr "liste de révocation des certificats SSL « %s » introuvable, continue : %s" +#~ 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 "could not access root certificate file \"%s\": %m" -#~ msgstr "n'a pas pu accéder au fichier du certificat racine « %s » : %m" +#~ msgid "SSL renegotiation failure" +#~ msgstr "échec lors de la re-négotiation SSL" -#~ msgid "could not open directory \"pg_tblspc\": %m" -#~ msgstr "n'a pas pu ouvrir le répertoire « pg_tblspc » : %m" +#~ msgid "local user with ID %d does not exist" +#~ msgstr "l'utilisateur local dont l'identifiant est %d n'existe pas" -#~ msgid "standby connections not allowed because wal_level=minimal" -#~ msgstr "connexions standby non autorisées car wal_level=minimal" +#~ msgid "Kerberos unparse_name returned error %d" +#~ msgstr "unparse_name 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 recvauth returned error %d" +#~ msgstr "recvauth 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 sname_to_principal(\"%s\", \"%s\") returned error %d" +#~ msgstr "sname_to_principal(« %s », « %s ») de Kerberos a renvoyé 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 keytab resolving returned error %d" +#~ msgstr "la résolution keytab de Kerberos a renvoyé l'erreur %d" -#~ msgid "Must be superuser to drop a foreign-data wrapper." -#~ msgstr "Doit être super-utilisateur pour supprimer un wrapper de données distantes." +#~ msgid "Kerberos initialization returned error %d" +#~ msgstr "l'initialisation de Kerberos a retourné l'erreur %d" -#~ msgid "permission denied to drop foreign-data wrapper \"%s\"" -#~ msgstr "droit refusé pour supprimer le wrapper de données distantes « %s »" +#~ msgid "Kerberos 5 authentication failed for user \"%s\"" +#~ msgstr "authentification Kerberos 5 échouée pour l'utilisateur « %s »" -#~ msgid "removing built-in function \"%s\"" -#~ msgstr "suppression de la fonction interne « %s »" +#~ 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 "foreign key constraint \"%s\" of relation \"%s\" does not exist" -#~ msgstr "la clé étrangère « %s » de la relation « %s » n'existe pas" +#~ msgid "invalid input syntax for transaction log location: \"%s\"" +#~ msgstr "syntaxe invalide en entrée pour l'emplacement du journal de transactions : « %s »" -#~ msgid "Sets the list of known custom variable classes." -#~ msgstr "Initialise la liste des classes variables personnalisées connues." +#~ msgid "could not parse transaction log location \"%s\"" +#~ msgstr "n'a pas pu analyser l'emplacement du journal des transactions « %s »" -#~ msgid "WAL sender sleep time between WAL replications." +#~ msgid "%s \"%s\": return code %d" +#~ msgstr "%s « %s » : code de retour %d" + +#~ 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 "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 index 425c8be35a..c5225ffa19 100644 --- a/src/backend/po/ko.po +++ b/src/backend/po/ko.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-11-25 15:32+0900\n" -"PO-Revision-Date: 2016-12-30 16:54+0900\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" @@ -24,7 +24,7 @@ msgid "not recorded" msgstr "기ë¡ë˜ì–´ 있지 않ìŒ" #: ../common/controldata_utils.c:52 commands/copy.c:2833 -#: commands/extension.c:3120 utils/adt/genfile.c:134 +#: commands/extension.c:3141 utils/adt/genfile.c:134 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "\"%s\" íŒŒì¼ ì¼ê¸° 모드로 열기 실패: %m" @@ -35,11 +35,11 @@ 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 +#: 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 @@ -152,26 +152,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:850 +#: ../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:2334 postmaster/postmaster.c:2365 -#: postmaster/postmaster.c:3898 postmaster/postmaster.c:4588 -#: postmaster/postmaster.c:4663 postmaster/postmaster.c:5338 -#: postmaster/postmaster.c:5602 +#: 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: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 +#: 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/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/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 @@ -290,7 +291,7 @@ msgid "could not determine encoding for codeset \"%s\"" msgstr "\"%s\" 코드 세트 í™˜ê²½ì— ì‚¬ìš©í•  ì¸ì½”ë”©ì„ ê²°ì •í•  수 없습니다" #: ../port/chklocale.c:294 ../port/chklocale.c:423 -#: postmaster/postmaster.c:4867 +#: postmaster/postmaster.c:4868 #, c-format msgid "Please report this to ." msgstr "ì´ ë‚´ìš©ì„ ì£¼ì†Œë¡œ 보고하십시오." @@ -298,7 +299,8 @@ 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\"" +msgstr "" +"\"%s\" ë¡œì¼€ì¼ í™˜ê²½ì—서 사용할 ì¸ì½”ë”©ì„ ê²°ì •í•  수 없습니다. 코드 세트: \"%s\"" #: ../port/dirmod.c:218 #, c-format @@ -344,8 +346,8 @@ msgid "" "You might have antivirus, backup, or similar software interfering with the " "database system." msgstr "" -"ë°”ì´ëŸ¬ìФ 백신 프로그램, 백업 ë˜ëŠ” 유사한 소프트웨어가 ë°ì´í„°ë² ì´ìФ " -"ì‹œìŠ¤í…œì„ ë°©í•´í•  수 있습니다." +"ë°”ì´ëŸ¬ìФ 백신 프로그램, 백업 ë˜ëŠ” 유사한 소프트웨어가 ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì„ " +"ë°©í•´í•  수 있습니다." #: ../port/path.c:654 #, c-format @@ -407,7 +409,8 @@ msgid "" "brin operator family \"%s\" contains function %s with wrong signature for " "support number %d" msgstr "" -"\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s 함수가 ìž˜ëª»ëœ signature 번호(%d)로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s 함수가 ìž˜ëª»ëœ signature 번호(%d)로 지정ë˜ì—ˆìе" +"니다." #: access/brin/brin_validate.c:153 #, c-format @@ -415,7 +418,8 @@ msgid "" "brin operator family \"%s\" contains operator %s with invalid strategy " "number %d" msgstr "" -"\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ì „ëžµ 번호(%d)로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ì „ëžµ 번호(%d)로 지정ë˜ì—ˆìŠµë‹ˆ" +"다." #: access/brin/brin_validate.c:182 #, c-format @@ -428,8 +432,7 @@ msgstr "" #: access/brin/brin_validate.c:195 #, c-format msgid "brin operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ signature를 사용합니다." +msgstr "\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ signature를 사용합니다." #: access/brin/brin_validate.c:233 #, c-format @@ -532,7 +535,9 @@ 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 번째 칼럼" +msgstr "" +"반환 ìžë£Œí˜•으로 %s í˜•ì„ ì§€ì •í–ˆì§€ë§Œ, ì¹¼ëŸ¼ì€ %s ìžë£Œí˜•입니다. 해당 칼럼: %d 번" +"째 칼럼" #: access/common/tupconvert.c:136 #, c-format @@ -540,7 +545,7 @@ msgid "" "Number of returned columns (%d) does not match expected column count (%d)." 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 " @@ -548,12 +553,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를 지정할 수 없습니다" @@ -575,8 +580,8 @@ msgstr "maintenance_work_mem ì„¤ì •ê°’ì„ ì¤„ì´ì„¸ìš”." 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/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 @@ -602,7 +607,9 @@ 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 íƒìƒ‰ ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 없습니다." +msgstr "" +"GIN ì¸ë±ìŠ¤ê°€ 옛날 버전ì´ì–´ì„œ ì¸ë±ìФ ì „ì²´ íƒìƒ‰, null íƒìƒ‰ ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 ì—†" +"습니다." #: access/gin/ginscan.c:406 #, c-format @@ -615,8 +622,8 @@ msgid "" "gin operator family \"%s\" contains support procedure %s with cross-type " "registration" msgstr "" -"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 " -"%s ì§€ì› í”„ë¡œì‹œì ¸ê°€ í¬í•¨ë˜ì–´ 있습니다." +"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 %s ì§€ì› í”„ë¡œì‹œì ¸ê°€ í¬" +"함ë˜ì–´ 있습니다." #: access/gin/ginvalidate.c:148 #, c-format @@ -624,7 +631,8 @@ msgid "" "gin operator family \"%s\" contains function %s with invalid support number " "%d" msgstr "" -"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆìе" +"니다." #: access/gin/ginvalidate.c:160 #, c-format @@ -632,8 +640,8 @@ msgid "" "gin operator family \"%s\" contains function %s with wrong signature for " "support number %d" msgstr "" -"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› " -"번호 %d 로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› ë²ˆí˜¸ %d 로 " +"지정ë˜ì—ˆìŠµë‹ˆë‹¤." #: access/gin/ginvalidate.c:179 #, c-format @@ -641,7 +649,8 @@ msgid "" "gin operator family \"%s\" contains operator %s with invalid strategy number " "%d" msgstr "" -"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆ" +"다." #: access/gin/ginvalidate.c:192 #, c-format @@ -654,14 +663,12 @@ msgstr "" #: access/gin/ginvalidate.c:205 #, c-format msgid "gin operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." +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 ì§€ì› í•¨ìˆ˜ê°€ 빠졌습니다." +msgstr "\"%s\" gin ì—°ì‚°ìž í´ëž˜ìŠ¤ì— %d ì§€ì› í•¨ìˆ˜ê°€ 빠졌습니다." #: access/gin/ginvalidate.c:256 #, c-format @@ -679,8 +686,8 @@ msgid "" "This is caused by an incomplete page split at crash recovery before " "upgrading to PostgreSQL 9.1." msgstr "" -"ì´ ë¬¸ì œëŠ” PostgreSQL 9.1 버전으로 업그레ì´ë“œ 하기 ì „ì— " -"장애 복구 처리ì—서 ìž˜ëª»ëœ íŽ˜ì´ì§€ 분리 ë•Œë¬¸ì— ë°œìƒí–ˆìŠµë‹ˆë‹¤." +"ì´ ë¬¸ì œëŠ” PostgreSQL 9.1 버전으로 업그레ì´ë“œ 하기 ì „ì— ìž¥ì•  복구 처리ì—서 잘" +"ëª»ëœ íŽ˜ì´ì§€ 분리 ë•Œë¬¸ì— ë°œìƒí–ˆìŠµë‹ˆë‹¤." #: access/gist/gist.c:683 access/gist/gistutil.c:738 #: access/gist/gistutil.c:749 access/gist/gistvacuum.c:261 @@ -717,8 +724,8 @@ 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 명령ì—서 해당 ì—´ì„ ë‘ ë²ˆì§¸ ì¸ë±ìŠ¤ë¡œ 사용하십시오." +"ì¸ë±ìŠ¤ê°€ 최ì í™”ë˜ì§€ 않았습니다. 최ì í™”하려면 개발ìžì—게 문ì˜í•˜ê±°ë‚˜, CREATE " +"INDEX 명령ì—서 해당 ì—´ì„ ë‘ ë²ˆì§¸ ì¸ë±ìŠ¤ë¡œ 사용하십시오." #: access/gist/gistutil.c:735 access/hash/hashutil.c:169 #: access/nbtree/nbtpage.c:515 @@ -738,8 +745,8 @@ msgid "" "gist operator family \"%s\" contains support procedure %s with cross-type " "registration" msgstr "" -"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 " -"%s ì§€ì› í”„ë¡œì‹œì ¸ê°€ í¬í•¨ë˜ì–´ 있습니다." +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 %s ì§€ì› í”„ë¡œì‹œì ¸ê°€ " +"í¬í•¨ë˜ì–´ 있습니다." #: access/gist/gistvalidate.c:145 #, c-format @@ -747,7 +754,8 @@ msgid "" "gist operator family \"%s\" contains function %s with invalid support number " "%d" msgstr "" -"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆ" +"습니다." #: access/gist/gistvalidate.c:157 #, c-format @@ -755,8 +763,8 @@ msgid "" "gist operator family \"%s\" contains function %s with wrong signature for " "support number %d" msgstr "" -"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› " -"번호 %d 로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› ë²ˆí˜¸ %d " +"로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." #: access/gist/gistvalidate.c:177 #, c-format @@ -764,7 +772,8 @@ msgid "" "gist operator family \"%s\" contains operator %s with invalid strategy " "number %d" msgstr "" -"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆ" +"다." #: access/gist/gistvalidate.c:195 #, c-format @@ -772,7 +781,8 @@ msgid "" "gist operator family \"%s\" contains unsupported ORDER BY specification for " "operator %s" msgstr "" -"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ì§€ì›í•˜ì§€ 않는 ORDER BY 명세를 사용합니다." +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ì§€ì›í•˜ì§€ 않는 ORDER BY 명세를 사용합" +"니다." #: access/gist/gistvalidate.c:206 #, c-format @@ -785,21 +795,19 @@ msgstr "" #: access/gist/gistvalidate.c:225 #, c-format msgid "gist operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." +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 ì§€ì› í•¨ìˆ˜ê°€ 빠졌습니다." +msgstr "\"%s\" gist ì—°ì‚°ìž í´ëž˜ìŠ¤ì— %d ì§€ì› í•¨ìˆ˜ê°€ 빠졌습니다." -#: 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." @@ -831,8 +839,8 @@ msgid "" "hash operator family \"%s\" contains support procedure %s with cross-type " "registration" msgstr "" -"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 " -"%s ì§€ì› í”„ë¡œì‹œì ¸ê°€ í¬í•¨ë˜ì–´ 있습니다." +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 %s ì§€ì› í”„ë¡œì‹œì ¸ê°€ " +"í¬í•¨ë˜ì–´ 있습니다." #: access/hash/hashvalidate.c:113 #, c-format @@ -840,8 +848,8 @@ msgid "" "hash operator family \"%s\" contains function %s with wrong signature for " "support number %d" msgstr "" -"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› " -"번호 %d 로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› ë²ˆí˜¸ %d " +"로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." #: access/hash/hashvalidate.c:130 #, c-format @@ -849,7 +857,8 @@ msgid "" "hash operator family \"%s\" contains function %s with invalid support number " "%d" msgstr "" -"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆ" +"습니다." #: access/hash/hashvalidate.c:151 #, c-format @@ -857,7 +866,8 @@ msgid "" "hash operator family \"%s\" contains operator %s with invalid strategy " "number %d" msgstr "" -"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆ" +"다." #: access/hash/hashvalidate.c:164 #, c-format @@ -870,8 +880,7 @@ msgstr "" #: access/hash/hashvalidate.c:177 #, c-format msgid "hash operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." +msgstr "\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." #: access/hash/hashvalidate.c:189 #, c-format @@ -881,7 +890,8 @@ 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 ìžë£Œí˜•ì„ ë‹¤ë£¨ëŠ” ì—°ì‚°ìžê°€ ì—†ìŒ" +msgstr "" +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ìžë£Œí˜•ê³¼ %s ìžë£Œí˜•ì„ ë‹¤ë£¨ëŠ” ì—°ì‚°ìžê°€ ì—†ìŒ" #: access/hash/hashvalidate.c:231 #, c-format @@ -894,14 +904,14 @@ 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: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:12053 +#: 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\" ê°ì²´ëŠ” 복합 ìžë£Œí˜•입니다" @@ -932,7 +942,7 @@ 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:5253 executor/execMain.c:2314 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "\"%s\" 릴레ì´ì…˜ì˜ 잠금 정보를 구할 수 ì—†ìŒ" @@ -949,22 +959,22 @@ 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: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: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: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 +#: 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:1223 +#: 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" @@ -982,20 +992,20 @@ 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 +#: 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:6848 utils/misc/guc.c:6879 -#: utils/misc/guc.c:8729 utils/misc/guc.c:8743 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: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 @@ -1008,20 +1018,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 +#: 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:2102 storage/file/copydir.c:155 -#: storage/file/fd.c:607 storage/file/fd.c:2964 storage/file/fd.c:3031 +#: 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: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" @@ -1037,8 +1047,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:12044 +#: commands/indexcmds.c:1800 commands/tablecmds.c:242 +#: commands/tablecmds.c:12180 #, c-format msgid "\"%s\" is not an index" msgstr "\"%s\" ê°ì²´ëŠ” ì¸ë±ìŠ¤ê°€ 아닙니다" @@ -1071,11 +1081,10 @@ msgid "" "indexing." msgstr "" "ë²„í¼ íŽ˜ì´ì§€ì˜ 1/3보다 í° ê°’ì€ ì¸ë±ì‹±í•  수 없습니다.\n" -"ê°’ì˜ MD5 해시 함수 ì¸ë±ìŠ¤ë¥¼ 고려하거나 ì „ì²´ í…스트 ì¸ë±ì‹±ì„ 사용하" -"십시오." +"ê°’ì˜ MD5 해시 함수 ì¸ë±ìŠ¤ë¥¼ 고려하거나 ì „ì²´ í…스트 ì¸ë±ì‹±ì„ 사용하십시오." #: 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:1702 #, c-format msgid "index \"%s\" is not a btree" msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” btree ì¸ë±ìŠ¤ê°€ 아닙니다" @@ -1106,7 +1115,8 @@ msgid "" "btree operator family \"%s\" contains function %s with invalid support " "number %d" msgstr "" -"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆ" +"습니다." #: access/nbtree/nbtvalidate.c:112 #, c-format @@ -1114,8 +1124,8 @@ msgid "" "btree operator family \"%s\" contains function %s with wrong signature for " "support number %d" msgstr "" -"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› " -"번호 %d 로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› ë²ˆí˜¸ %d " +"로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." #: access/nbtree/nbtvalidate.c:132 #, c-format @@ -1123,7 +1133,8 @@ msgid "" "btree operator family \"%s\" contains operator %s with invalid strategy " "number %d" msgstr "" -"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìе" +"니다." #: access/nbtree/nbtvalidate.c:145 #, c-format @@ -1136,8 +1147,7 @@ msgstr "" #: access/nbtree/nbtvalidate.c:158 #, c-format msgid "btree operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." +msgstr "\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." #: access/nbtree/nbtvalidate.c:200 #, c-format @@ -1148,7 +1158,8 @@ msgstr "\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì—는 %s ìžë£Œí˜•ê³¼ %s ìžë£Œí˜•ìš© #, c-format msgid "" "btree operator family \"%s\" is missing support function for types %s and %s" -msgstr "\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì—는 %s ìžë£Œí˜•ê³¼ %s ìžë£Œí˜•ìš© ì§€ì› í•¨ìˆ˜ê°€ 빠졌ìŒ" +msgstr "" +"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì—는 %s ìžë£Œí˜•ê³¼ %s ìžë£Œí˜•ìš© ì§€ì› í•¨ìˆ˜ê°€ 빠졌ìŒ" #: access/nbtree/nbtvalidate.c:224 #, c-format @@ -1171,8 +1182,8 @@ msgid "" "spgist operator family \"%s\" contains support procedure %s with cross-type " "registration" msgstr "" -"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 " -"%s ì§€ì› í”„ë¡œì‹œì ¸ê°€ í¬í•¨ë˜ì–´ 있습니다." +"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 %s ì§€ì› í”„ë¡œì‹œì ¸" +"ê°€ í¬í•¨ë˜ì–´ 있습니다." #: access/spgist/spgvalidate.c:115 #, c-format @@ -1180,7 +1191,8 @@ msgid "" "spgist operator family \"%s\" contains function %s with invalid support " "number %d" msgstr "" -"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜" +"었습니다." #: access/spgist/spgvalidate.c:127 #, c-format @@ -1188,8 +1200,8 @@ msgid "" "spgist operator family \"%s\" contains function %s with wrong signature for " "support number %d" msgstr "" -"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› " -"번호 %d 로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› ë²ˆí˜¸ %d " +"로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." #: access/spgist/spgvalidate.c:146 #, c-format @@ -1197,7 +1209,8 @@ msgid "" "spgist operator family \"%s\" contains operator %s with invalid strategy " "number %d" msgstr "" -"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤." +"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìе" +"니다." #: access/spgist/spgvalidate.c:159 #, c-format @@ -1210,21 +1223,20 @@ msgstr "" #: access/spgist/spgvalidate.c:172 #, c-format msgid "spgist operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." +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 ìžë£Œí˜•ìš© ì—°ì‚°ìžê°€ 빠졌ìŒ" +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 ìžë£Œí˜•용으로 없습니다." +msgstr "\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %d ì§€ì› í•¨ìˆ˜ê°€ %s ìžë£Œí˜•용으로 없습니다." #: access/spgist/spgvalidate.c:233 #, c-format @@ -1236,24 +1248,23 @@ msgstr "\"%s\" spgist ì—°ì‚°ìž í´ëž˜ìŠ¤ì— ì—°ì‚°ìžê°€ 빠졌ìŒ" 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\" 환경 설정 매개 ë³€ìˆ˜ê°’ì„ ì§€ì • 하세요." +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\" 환경 설정 매개 변수를 지정하세요." @@ -1264,8 +1275,8 @@ msgid "" "database is not accepting commands that generate new MultiXactIds to avoid " "wraparound data loss in database \"%s\"" msgstr "" -"\"%s\" ë°ì´í„°ë² ì´ìФ ìžë£Œ ì†ì‹¤ì„ 막기 위해 새로운 MultiXactId " -"만드는 ìž‘ì—…ì„ ë” ì´ìƒ í•  수 없습니다." +"\"%s\" ë°ì´í„°ë² ì´ìФ ìžë£Œ ì†ì‹¤ì„ 막기 위해 새로운 MultiXactId 만드는 ìž‘ì—…ì„ " +"ë” ì´ìƒ í•  수 없습니다." #: access/transam/multixact.c:1002 access/transam/multixact.c:1009 #: access/transam/multixact.c:1033 access/transam/multixact.c:1042 @@ -1283,8 +1294,8 @@ msgid "" "database is not accepting commands that generate new MultiXactIds to avoid " "wraparound data loss in database with OID %u" msgstr "" -"%u OID ë°ì´í„°ë² ì´ìФ ìžë£Œ ì†ì‹¤ì„ 막기 위해 새로운 MultiXactId " -"만드는 ìž‘ì—…ì„ ë” ì´ìƒ í•  수 없습니다." +"%u OID ë°ì´í„°ë² ì´ìФ ìžë£Œ ì†ì‹¤ì„ 막기 위해 새로운 MultiXactId 만드는 ìž‘ì—…ì„ " +"ë” ì´ìƒ í•  수 없습니다." #: access/transam/multixact.c:1028 access/transam/multixact.c:2314 #, c-format @@ -1292,7 +1303,8 @@ 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 ìž‘ì—…ì„ í•´ì•¼ 합니다." +"\"%s\" ë°ì´í„°ë² ì´ìŠ¤ëŠ” %uë²ˆì˜ íŠ¸ëžœìž­ì…˜ì´ ë°œìƒë˜ê¸° ì „ì— VACUUM ìž‘ì—…ì„ í•´ì•¼ 합니" +"다." #: access/transam/multixact.c:1037 access/transam/multixact.c:2323 #, c-format @@ -1301,7 +1313,8 @@ msgid "" msgid_plural "" "database with OID %u must be vacuumed before %u more MultiXactIds are used" msgstr[0] "" -"%u OID ë°ì´í„°ë² ì´ìŠ¤ëŠ” %uë²ˆì˜ íŠ¸ëžœìž­ì…˜ì´ ë°œìƒë˜ê¸° ì „ì— VACUUM ìž‘ì—…ì„ í•´ì•¼ 합니다." +"%u OID ë°ì´í„°ë² ì´ìŠ¤ëŠ” %uë²ˆì˜ íŠ¸ëžœìž­ì…˜ì´ ë°œìƒë˜ê¸° ì „ì— VACUUM ìž‘ì—…ì„ í•´ì•¼ 합니" +"다." #: access/transam/multixact.c:1098 #, c-format @@ -1317,8 +1330,7 @@ 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 ê°œ ë¿ìž…니다." +"ì´ ëª…ë ¹ì€ %u ê°œì˜ multixact를 ì¨ì•¼í•˜ëŠ”ë°, 쓸 수 있는 ê³µê°„ì€ %u ê°œ ë¿ìž…니다." #: access/transam/multixact.c:1104 #, c-format @@ -1327,8 +1339,8 @@ msgid "" "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 ìž‘ì—…ì„ í•˜ì‹­ì‹œì˜¤." +"vacuum_multixact_freeze_min_age, vacuum_multixact_freeze_table_age ê°’ì„ ì¡°ì •" +"하고, %u OID ë°ì´í„°ë² ì´ìФ 대ìƒìœ¼ë¡œ VACUUM ìž‘ì—…ì„ í•˜ì‹­ì‹œì˜¤." #: access/transam/multixact.c:1135 #, c-format @@ -1338,7 +1350,8 @@ msgid_plural "" "database with OID %u must be vacuumed before %d more multixact members are " "used" msgstr[0] "" -"%u OID ë°ì´í„°ë² ì´ìŠ¤ëŠ” %d ê°œì˜ ë©€í‹°íŠ¸ëžœìž­ì…˜ì„ ì‚¬ìš©í•˜ê¸° ì „ì— vacuum ìž‘ì—…ì„ í•´ì•¼ 합니다." +"%u OID ë°ì´í„°ë² ì´ìŠ¤ëŠ” %d ê°œì˜ ë©€í‹°íŠ¸ëžœìž­ì…˜ì„ ì‚¬ìš©í•˜ê¸° ì „ì— vacuum ìž‘ì—…ì„ í•´" +"야 합니다." #: access/transam/multixact.c:1140 #, c-format @@ -1347,8 +1360,8 @@ msgid "" "vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age " "settings." msgstr "" -"vacuum_multixact_freeze_min_age 설정값과 vacuum_multixact_freeze_table_age ê°’ì„ " -"줄여서 ë°ì´í„°ë² ì´ìФ 단위로 VACUUM ìž‘ì—…ì„ ì§„í–‰í•˜ì„¸ìš”." +"vacuum_multixact_freeze_min_age 설정값과 vacuum_multixact_freeze_table_age ê°’" +"ì„ ì¤„ì—¬ì„œ ë°ì´í„°ë² ì´ìФ 단위로 VACUUM ìž‘ì—…ì„ ì§„í–‰í•˜ì„¸ìš”." #: access/transam/multixact.c:1277 #, c-format @@ -1374,8 +1387,8 @@ msgid "" "database.\n" "You might also need to commit or roll back old prepared transactions." msgstr "" -"ë°ì´í„°ë² ì´ìŠ¤ê°€ 종료ë˜ì§€ 않ë„ë¡ í•˜ë ¤ë©´ ë°ì´í„°ë² ì´ìФ ìˆ˜ì¤€ì˜ " -"VACUUMì„ ì‹¤í–‰í•˜ì‹­ì‹œì˜¤.\n" +"ë°ì´í„°ë² ì´ìŠ¤ê°€ 종료ë˜ì§€ 않ë„ë¡ í•˜ë ¤ë©´ ë°ì´í„°ë² ì´ìФ ìˆ˜ì¤€ì˜ VACUUMì„ ì‹¤í–‰í•˜ì‹­ì‹œ" +"오.\n" "ë˜í•œ ì˜¤ëž˜ëœ íŠ¸ëžœìž­ì…˜ì„ ì»¤ë°‹í•˜ê±°ë‚˜ 롤백할 필요가 있습니다." #: access/transam/multixact.c:2598 @@ -1389,8 +1402,8 @@ msgid "" "MultiXact member wraparound protections are disabled because oldest " "checkpointed MultiXact %u does not exist on disk" msgstr "" -"가장 ì˜¤ëž˜ëœ ì²´í¬í¬ì¸íЏ ìž‘ì—…ì´ ì™„ë£Œëœ %u 멀티 트랜잭션 번호가 디스í¬ì— 없기 때문ì—, " -"멀티 트랜잭션 번호 겹침 ë°©ì§€ ê¸°ëŠ¥ì´ ë¹„í™œì„±í™” ë˜ì–´ 있습니다." +"가장 ì˜¤ëž˜ëœ ì²´í¬í¬ì¸íЏ ìž‘ì—…ì´ ì™„ë£Œëœ %u 멀티 트랜잭션 번호가 디스í¬ì— 없기 때" +"문ì—, 멀티 트랜잭션 번호 겹침 ë°©ì§€ ê¸°ëŠ¥ì´ ë¹„í™œì„±í™” ë˜ì–´ 있습니다." #: access/transam/multixact.c:2624 #, c-format @@ -1406,7 +1419,8 @@ msgstr "멀티 트랜잭션 중지 제한 번호는 %u 입니다. (%u 멀티트 #, c-format msgid "" "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" -msgstr "가장 ì˜¤ëž˜ëœ ë©€í‹° 트랜잭션 번호는 %u, 가장 최신 ê²ƒì€ %u, truncate 작업 건너뜀" +msgstr "" +"가장 ì˜¤ëž˜ëœ ë©€í‹° 트랜잭션 번호는 %u, 가장 최신 ê²ƒì€ %u, truncate 작업 건너뜀" #: access/transam/multixact.c:3024 #, c-format @@ -1414,8 +1428,8 @@ msgid "" "cannot truncate up to MultiXact %u because it does not exist on disk, " "skipping truncation" msgstr "" -"디스í¬ì— 해당 멀티 트랜잭션 번호가 없어, %u 멀티 트랜잭션 번호로 truncate 못함, " -"truncate 작업 건너뜀" +"디스í¬ì— 해당 멀티 트랜잭션 번호가 없어, %u 멀티 트랜잭션 번호로 truncate 못" +"함, truncate 작업 건너뜀" #: access/transam/multixact.c:3350 #, c-format @@ -1534,7 +1548,7 @@ 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:3064 access/transam/xlog.c:3225 +#: 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 @@ -1576,98 +1590,98 @@ 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 "ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ ë내기 작업 권한 ì—†ìŒ" -#: access/transam/twophase.c:546 +#: access/transam/twophase.c:547 #, c-format msgid "Must be superuser or the user that prepared the transaction." msgstr "해당 ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì˜ ì†Œìœ ì£¼ì´ê±°ë‚˜ superuser여야합니다" -#: 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." msgstr "ìž‘ì—…ì„ ë§ˆì¹˜ë ¤ë©´ ê·¸ ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì´ ìžˆëŠ” ë°ì´í„°ë² ì´ìŠ¤ì— ì—°ê²°í•˜ì‹­ì‹œì˜¤." -#: 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 "2단계 ìƒíƒœ íŒŒì¼ ìµœëŒ€ 길ì´ë¥¼ 초과함" -#: access/transam/twophase.c:1160 +#: 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:1177 +#: 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:1209 +#: 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:1262 access/transam/xlog.c:6080 +#: 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:1268 +#: 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: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 ìœ„ì¹˜ì— 2단계 커밋 ìƒíƒœ ìžë£Œê°€ 없습니다" -#: access/transam/twophase.c:1511 +#: 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:1541 +#: 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: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 "two-phase ìƒíƒœì •ë³´ 파ì¼ì„ 쓸 수 ì—†ìŒ: %m" -#: access/transam/twophase.c:1569 +#: 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:1575 +#: access/transam/twophase.c:1576 #, c-format msgid "could not close two-phase state file: %m" msgstr "two-phase ìƒíƒœì •ë³´ 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %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" @@ -1675,24 +1689,24 @@ msgid_plural "" "%u two-phase state files were written for long-running prepared transactions" msgstr[0] "" -#: access/transam/twophase.c:1712 +#: access/transam/twophase.c:1713 #, c-format msgid "removing future two-phase state file \"%s\"" msgstr "\"%s\" ì´ë¦„ì˜ future two-phase ìƒíƒœì •ë³´ 파ì¼ì„ 삭제함" -#: 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 "\"%s\" ì´ë¦„ì˜ ìž˜ëª»ëœ two-phase ìƒíƒœì •ë³´ 파ì¼ì„ 삭제함" -#: 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 "\"%s\" ì´ë¦„ì˜ ì˜¤ëž˜ëœ two-phase ìƒíƒœì •ë³´ 파ì¼ì„ 삭제함" -#: access/transam/twophase.c:1954 +#: access/transam/twophase.c:1955 #, c-format msgid "recovering prepared transaction %u" msgstr "%u ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì„ ë³µêµ¬í•¨" @@ -1703,8 +1717,8 @@ msgid "" "database is not accepting commands to avoid wraparound data loss in database " "\"%s\"" msgstr "" -"\"%s\" ë°ì´í„°ë² ì´ìФ 트랜잭션 ID ê²¹ì¹¨ì— ì˜í•œ ìžë£Œ ì†ì‹¤ì„ 방지하기 위해 " -"ë” ì´ìƒ ìžë£Œ ì¡°ìž‘ ìž‘ì—…ì„ í—ˆìš©í•˜ì§€ 않습니다" +"\"%s\" ë°ì´í„°ë² ì´ìФ 트랜잭션 ID ê²¹ì¹¨ì— ì˜í•œ ìžë£Œ ì†ì‹¤ì„ 방지하기 위해 ë” ì´" +"ìƒ ìžë£Œ ì¡°ìž‘ ìž‘ì—…ì„ í—ˆìš©í•˜ì§€ 않습니다" #: access/transam/varsup.c:126 access/transam/varsup.c:133 #, c-format @@ -1712,8 +1726,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 "" -"postmaster를 중지하고 ë‹¨ì¼ ì‚¬ìš©ìž ëª¨ë“œë¡œ 서버를 실행한 ë’¤ " -"VACUUM ìž‘ì—…ì„ í•˜ì‹­ì‹œì˜¤.\n" +"postmaster를 중지하고 ë‹¨ì¼ ì‚¬ìš©ìž ëª¨ë“œë¡œ 서버를 실행한 ë’¤ VACUUM ìž‘ì—…ì„ í•˜ì‹­" +"시오.\n" "ë˜í•œ ì˜¤ëž˜ëœ íŠ¸ëžœìž­ì…˜ì„ ì»¤ë°‹í•˜ê±°ë‚˜ 롤백할 필요가 있습니다." #: access/transam/varsup.c:131 @@ -1722,8 +1736,8 @@ msgid "" "database is not accepting commands to avoid wraparound data loss in database " "with OID %u" msgstr "" -"%u OID ë°ì´í„°ë² ì´ìФì—서 ìžë£Œ 겹침으로 ë°œìƒí•  수 있는 ìžë£Œ ì†ì‹¤ì„ 방지하기 위해 " -"ëª…ë ¹ì„ ìˆ˜ë½í•˜ì§€ 않ìŒ" +"%u OID ë°ì´í„°ë² ì´ìФì—서 ìžë£Œ 겹침으로 ë°œìƒí•  수 있는 ìžë£Œ ì†ì‹¤ì„ 방지하기 위" +"í•´ ëª…ë ¹ì„ ìˆ˜ë½í•˜ì§€ 않ìŒ" #: access/transam/varsup.c:143 access/transam/varsup.c:381 #, c-format @@ -1841,164 +1855,164 @@ msgstr "병렬 처리 중ì—는 í•˜ìœ„íŠ¸ëžœìž­ì…˜ì„ ì»¤ë°‹í•  수 ì—†ìŒ" 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:2299 #, 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: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:2553 +#: 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:3195 +#: access/transam/xlog.c:3224 #, c-format msgid "not enough data in file \"%s\"" msgstr "\"%s\" 파ì¼ì— ìžë£Œê°€ 불충분합니다" -#: access/transam/xlog.c:3336 +#: access/transam/xlog.c:3365 #, 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:3554 access/transam/xlog.c:5339 #, 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: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:3642 access/transam/xlog.c:3717 -#: access/transam/xlog.c:3915 +#: 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:3798 +#: access/transam/xlog.c:3827 #, c-format msgid "recycled transaction log file \"%s\"" msgstr "\"%s\" 트랜잭션 로그 íŒŒì¼ ìž¬í™œìš©í•¨" -#: access/transam/xlog.c:3810 +#: access/transam/xlog.c:3839 #, c-format msgid "removing transaction log file \"%s\"" msgstr "\"%s\" 트랜잭션 로그 íŒŒì¼ ì‚­ì œ 중" -#: access/transam/xlog.c:3830 +#: access/transam/xlog.c:3859 #, c-format msgid "could not rename old transaction log file \"%s\": %m" msgstr "ì´ì „ 트랜잭션 로그 íŒŒì¼ \"%s\"ì˜ ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ: %m" -#: access/transam/xlog.c:3842 +#: access/transam/xlog.c:3871 #, 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:3904 access/transam/xlog.c:3914 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "필요한 WAL 디렉터리 \"%s\"ì´(ê°€) ì—†ìŒ" -#: access/transam/xlog.c:3891 +#: access/transam/xlog.c:3920 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "누ë½ëœ WAL 디렉터리 \"%s\"ì„(를) 만드는 중" -#: access/transam/xlog.c:3894 +#: access/transam/xlog.c:3923 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "누ë½ëœ \"%s\" 디렉터리를 만들 수 ì—†ìŒ: %m" -#: access/transam/xlog.c:3925 +#: access/transam/xlog.c:3954 #, c-format msgid "removing transaction log backup history file \"%s\"" msgstr "\"%s\" 트랜잭션 로그 백업 히스토리 íŒŒì¼ ì‚­ì œ 중" -#: access/transam/xlog.c:4006 +#: 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:4128 +#: 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:4142 +#: 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:4161 +#: access/transam/xlog.c:4190 #, c-format msgid "new target timeline is %u" msgstr "새 ëŒ€ìƒ íƒ€ìž„ë¼ì¸: %u" -#: access/transam/xlog.c:4241 +#: access/transam/xlog.c:4270 #, 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:4281 access/transam/xlog.c:4517 #, c-format msgid "could not write to control file: %m" msgstr "컨트롤 파ì¼ì„ 쓸 수 ì—†ìŒ: %m" -#: access/transam/xlog.c:4258 access/transam/xlog.c:4494 +#: 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:4263 access/transam/xlog.c:4499 +#: 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:4281 access/transam/xlog.c:4477 +#: 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:4287 +#: access/transam/xlog.c:4316 #, c-format msgid "could not read from control file: %m" msgstr "컨트롤 íŒŒì¼ ì½ê¸° 실패: %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: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:4301 +#: 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)(으)로 컴파ì¼ë˜ì—ˆìŠµë‹ˆë‹¤." +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” PG_CONTROL_VERSION %d (0x%08x)(으)로 초기화ë˜ì—ˆì§€ë§Œ " +"서버는 PG_CONTROL_VERSION %d (0x%08x)(으)로 컴파ì¼ë˜ì—ˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4305 +#: access/transam/xlog.c:4334 #, c-format msgid "" "This could be a problem of mismatched byte ordering. It looks like you need " @@ -2006,7 +2020,7 @@ msgid "" msgstr "" "ì´ê²ƒì€ ë°”ì´íЏ 순서 불ì¼ì¹˜ ë¬¸ì œì¼ ìˆ˜ 있습니다. initdb ìž‘ì—…ì´ í•„ìš”í•´ 보입니다." -#: access/transam/xlog.c:4310 +#: access/transam/xlog.c:4339 #, c-format msgid "" "The database cluster was initialized with PG_CONTROL_VERSION %d, but the " @@ -2015,18 +2029,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: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:4324 +#: access/transam/xlog.c:4353 #, c-format msgid "incorrect checksum in control file" msgstr "컨트롤 파ì¼ì— ìž˜ëª»ëœ ì²´í¬ì„¬ ê°’ì´ ìžˆìŠµë‹ˆë‹¤" -#: access/transam/xlog.c:4334 +#: access/transam/xlog.c:4363 #, c-format msgid "" "The database cluster was initialized with CATALOG_VERSION_NO %d, but the " @@ -2035,7 +2049,7 @@ msgstr "" "ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” CATALOG_VERSION_NO %d 버전으로 초기화 ë˜ì—ˆì§€ë§Œ, 서" "버는 CATALOG_VERSION_NO %d 버전으로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4341 +#: access/transam/xlog.c:4370 #, c-format msgid "" "The database cluster was initialized with MAXALIGN %d, but the server was " @@ -2044,16 +2058,16 @@ msgstr "" "ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” MAXALIGN %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " "MAXALIGN %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4348 +#: 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:4353 +#: access/transam/xlog.c:4382 #, c-format msgid "" "The database cluster was initialized with BLCKSZ %d, but the server was " @@ -2062,20 +2076,20 @@ 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: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:4429 access/transam/xlog.c:4436 -#: access/transam/xlog.c:4445 access/transam/xlog.c:4452 +#: 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:4360 +#: access/transam/xlog.c:4389 #, c-format msgid "" "The database cluster was initialized with RELSEG_SIZE %d, but the server was " @@ -2084,7 +2098,7 @@ msgstr "" "ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” RELSEG_SIZE %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " "RELSEG_SIZE %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4367 +#: access/transam/xlog.c:4396 #, c-format msgid "" "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was " @@ -2093,7 +2107,7 @@ msgstr "" "ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” XLOG_BLCKSZ %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " "XLOG_BLCKSZ %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4374 +#: access/transam/xlog.c:4403 #, c-format msgid "" "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " @@ -2102,7 +2116,7 @@ msgstr "" "ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” XLOG_SEG_SIZE %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " "XLOG_SEG_SIZE %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4381 +#: access/transam/xlog.c:4410 #, c-format msgid "" "The database cluster was initialized with NAMEDATALEN %d, but the server was " @@ -2111,7 +2125,7 @@ msgstr "" "ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” NAMEDATALEN %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " "NAMEDATALEN %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4388 +#: access/transam/xlog.c:4417 #, c-format msgid "" "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server " @@ -2120,25 +2134,25 @@ msgstr "" "ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” INDEX_MAX_KEYS %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " "INDEX_MAX_KEYS %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4395 +#: 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(으)로 ì»´íŒŒì¼ ë˜ì—ˆìŠµë‹ˆë‹¤." +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” TOAST_MAX_CHUNK_SIZE %d(으)로 초기화ë˜ì—ˆì§€ë§Œ 서버는 " +"TOAST_MAX_CHUNK_SIZE %d(으)로 ì»´íŒŒì¼ ë˜ì—ˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4402 +#: 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 (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” LOBLKSIZE %d(으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " +"LOBLKSIZE %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4411 +#: access/transam/xlog.c:4440 #, c-format msgid "" "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " @@ -2147,7 +2161,7 @@ msgstr "" "ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” HAVE_INT64_TIMESTAMP ê°’ì´ false로 초기화 ë˜ì—ˆì§€" "ë§Œ, 서버는 HAVE_INT64_TIMESTAMP ê°’ì´ true로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4418 +#: access/transam/xlog.c:4447 #, c-format msgid "" "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the " @@ -2156,236 +2170,238 @@ msgstr "" "ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” HAVE_INT64_TIMESTAMP ê°’ì´ true로 초기화 ë˜ì—ˆì§€ë§Œ, " "서버는 HAVE_INT64_TIMESTAMP ê°’ì´ false로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4427 +#: 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ì„ ì‚¬ìš©í•˜ì—¬ 컴파ì¼ë˜ì—ˆìŠµë‹ˆë‹¤." +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” USE_FLOAT4_BYVAL ì—†ì´ ì´ˆê¸°í™”ë˜ì—ˆì§€ë§Œ, 서버는 " +"USE_FLOAT4_BYVALì„ ì‚¬ìš©í•˜ì—¬ 컴파ì¼ë˜ì—ˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4434 +#: 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 ì—†ì´ ì»´íŒŒì¼ë˜ì—ˆìŠµë‹ˆë‹¤." +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” USE_FLOAT4_BYVALì„ ì‚¬ìš©í•˜ì—¬ 초기화ë˜ì—ˆì§€ë§Œ, 서버는 " +"USE_FLOAT4_BYVAL ì—†ì´ ì»´íŒŒì¼ë˜ì—ˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4443 +#: 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ì„ ì‚¬ìš©í•˜ì—¬ 컴파ì¼ë˜ì—ˆìŠµë‹ˆë‹¤." +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” USE_FLOAT8_BYVAL ì—†ì´ ì´ˆê¸°í™”ë˜ì—ˆì§€ë§Œ, 서버는 " +"USE_FLOAT8_BYVALì„ ì‚¬ìš©í•˜ì—¬ 컴파ì¼ë˜ì—ˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4450 +#: 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 ì—†ì´ ì»´íŒŒì¼ë˜ì—ˆìŠµë‹ˆë‹¤." +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” USE_FLOAT8_BYVALì„ ì‚¬ìš©í•˜ì—¬ 초기화ë˜ì—ˆì§€ë§Œ, 서버는 " +"USE_FLOAT8_BYVAL ì—†ì´ ì»´íŒŒì¼ë˜ì—ˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:4871 +#: access/transam/xlog.c:4900 #, c-format msgid "could not write bootstrap transaction log file: %m" msgstr "bootstrap 트랜잭션 로그 파ì¼ì„ 쓸 수 ì—†ìŒ: %m" -#: access/transam/xlog.c:4877 +#: access/transam/xlog.c:4906 #, c-format msgid "could not fsync bootstrap transaction log file: %m" msgstr "bootstrap 트랜잭션 로그 파ì¼ì„ fsyncí•  수 ì—†ìŒ: %m" -#: access/transam/xlog.c:4882 +#: access/transam/xlog.c:4911 #, c-format msgid "could not close bootstrap transaction log file: %m" msgstr "bootstrap 트랜잭션 로그 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %m" -#: access/transam/xlog.c:4957 +#: access/transam/xlog.c:4986 #, 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:5032 access/transam/xlog.c:5117 #, c-format msgid "invalid value for recovery parameter \"%s\": \"%s\"" msgstr "ìž˜ëª»ëœ \"%s\" 복구 매개 ë³€ìˆ˜ì˜ ê°’: \"%s\"" -#: access/transam/xlog.c:5006 +#: access/transam/xlog.c:5035 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." msgstr "사용할 수 있는 ê°’: \"pause\", \"promote\", \"shutdown\"" -#: access/transam/xlog.c:5026 +#: 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:5043 +#: 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:5074 +#: 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:5091 +#: access/transam/xlog.c:5120 #, 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: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:5150 +#: access/transam/xlog.c:5179 #, 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 +#: 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:1276 utils/adt/acl.c:5281 utils/misc/guc.c:5664 -#: utils/misc/guc.c:5757 utils/misc/guc.c:9700 utils/misc/guc.c:9734 -#: utils/misc/guc.c:9768 utils/misc/guc.c:9802 utils/misc/guc.c:9837 +#: 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:5188 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "알 수 없는 복구 매개 변수 ì´ë¦„: \"%s\"" -#: access/transam/xlog.c:5170 +#: 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 ì„¤ì •ë„ ì—†ìŠµë‹ˆë‹¤." +"복구 명령 íŒŒì¼ \"%s\"ì—서 primary_conninfo 설정ë„, restore_command ì„¤ì •ë„ ì—†" +"습니다." -#: access/transam/xlog.c:5172 +#: 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 하위 디렉터리를 조사할 것입니다." +"ë°ì´í„°ë² ì´ìФ 서버는 ì¼ë°˜ì ìœ¼ë¡œ 주 서버ì—서 ë°œìƒí•œ 트랜잭션 로그를 ë°˜ì˜í•˜ê¸° 위" +"í•´ pg_xlog 하위 디렉터리를 조사할 것입니다." -#: access/transam/xlog.c:5179 +#: 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 ì„¤ì •ì€ ë°˜ë“œì‹œ 있어야 합니다." +"대기 모드를 활성화 하지 않았다면(standby_mode = off), 복구 명령 íŒŒì¼ \"%s\"ì—" +"서 restore_command ì„¤ì •ì€ ë°˜ë“œì‹œ 있어야 합니다." -#: access/transam/xlog.c:5200 +#: access/transam/xlog.c:5229 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "ë‹¨ì¼ ì‚¬ìš©ìž ì„œë²„ë¥¼ 대ìƒìœ¼ë¡œ 대기 모드를 사용할 수 없습니다." -#: access/transam/xlog.c:5219 +#: access/transam/xlog.c:5248 #, c-format msgid "recovery target timeline %u does not exist" msgstr "%u 복구 ëŒ€ìƒ íƒ€ìž„ë¼ì¸ì´ ì—†ìŒ" -#: access/transam/xlog.c:5340 +#: access/transam/xlog.c:5369 #, c-format msgid "archive recovery complete" msgstr "ì•„ì¹´ì´ë¸Œ 복구 완료" -#: access/transam/xlog.c:5399 access/transam/xlog.c:5627 +#: access/transam/xlog.c:5428 access/transam/xlog.c:5656 #, c-format msgid "recovery stopping after reaching consistency" msgstr "ì¼ê´€ì„±ì„ 다 맞추어 복구 ìž‘ì—…ì„ ì¤‘ì§€í•©ë‹ˆë‹¤." -#: access/transam/xlog.c:5487 +#: access/transam/xlog.c:5516 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "%u 트랜잭션 커밋 ì „ 복구 중지함, 시간 %s" -#: access/transam/xlog.c:5494 +#: access/transam/xlog.c:5523 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "%u 트랜잭션 중단 ì „ 복구 중지함, 시간 %s" -#: access/transam/xlog.c:5539 +#: access/transam/xlog.c:5568 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "복구 중지함, 복구 위치 \"%s\", 시간 %s" -#: access/transam/xlog.c:5607 +#: access/transam/xlog.c:5636 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "%u 트랜잭션 커밋 후 복구 중지함, 시간 %s" -#: access/transam/xlog.c:5615 +#: access/transam/xlog.c:5644 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "%u 트랜잭션 중단 후 복구 중지함, 시간 %s" -#: access/transam/xlog.c:5654 +#: access/transam/xlog.c:5683 #, c-format msgid "recovery has paused" msgstr "복구 ìž‘ì—…ì´ ì¼ì‹œ 중지 ë¨" -#: access/transam/xlog.c:5655 +#: access/transam/xlog.c:5684 #, c-format msgid "Execute pg_xlog_replay_resume() to continue." msgstr "ê³„ì† ì§„í–‰í•˜ë ¤ë©´, pg_xlog_replay_resume() 함수를 호출하세요." -#: access/transam/xlog.c:5862 +#: 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)보다 낮게 설정 ë˜ì–´ 있기 때문입니다." +"ì½ê¸° ì „ìš© 대기 서버로 ìš´ì˜ì´ 불가능합니다. 현재 %s = %d ì„¤ì •ì€ ì£¼ ì„œë²„ì˜ ì„¤ì •" +"ê°’(%d)보다 낮게 설정 ë˜ì–´ 있기 때문입니다." -#: access/transam/xlog.c:5888 +#: access/transam/xlog.c:5917 #, c-format msgid "WAL was generated with wal_level=minimal, data may be missing" -msgstr "WAL ë‚´ìš©ì´ wal_level=minimal 설정으로 만들여졌습니다. ìžë£Œê°€ ì†ì‹¤ ë  ìˆ˜ 있습니다." +msgstr "" +"WAL ë‚´ìš©ì´ wal_level=minimal 설정으로 만들여졌습니다. ìžë£Œê°€ ì†ì‹¤ ë  ìˆ˜ 있습" +"니다." -#: access/transam/xlog.c:5889 +#: 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 " -"설정으로 ìš´ì˜ëœ ì ì´ 있다면 ë°œìƒí•©ë‹ˆë‹¤." +"ì´ ë¬¸ì œëŠ” 새 ë² ì´ìФ ë°±ì—…ì„ ë°›ì§€ ì•Šì€ ìƒíƒœì—서 서버가 ì¼ì‹œì ìœ¼ë¡œ " +"wal_level=minimal 설정으로 ìš´ì˜ëœ ì ì´ 있다면 ë°œìƒí•©ë‹ˆë‹¤." -#: access/transam/xlog.c:5900 +#: 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\" ë˜ëŠ” ê·¸ ì´ìƒ 수준으로 설정ë˜ì§€ 않아, " -"ì½ê¸° ì „ìš© ë³´ì¡° 서버로 ìš´ì˜ë  수 ì—†ìŒ" +"주 서버 wal_level ì„¤ì •ì´ \"replica\" ë˜ëŠ” ê·¸ ì´ìƒ 수준으로 설정ë˜ì§€ 않아, ì½" +"기 ì „ìš© ë³´ì¡° 서버로 ìš´ì˜ë  수 ì—†ìŒ" -#: access/transam/xlog.c:5901 +#: access/transam/xlog.c:5930 #, c-format msgid "" "Either set wal_level to \"replica\" on the master, or turn off hot_standby " @@ -2394,34 +2410,34 @@ msgstr "" "ìš´ì˜ ì„œë²„ì˜ í™˜ê²½ 설정ì—서 wal_leve = \"replica\" 형태로 지정하든가 " "hot_standby = off 형태로 지정하십시오." -#: access/transam/xlog.c:5958 +#: access/transam/xlog.c:5987 #, c-format msgid "control file contains invalid data" msgstr "컨트롤 파ì¼ì— ìž˜ëª»ëœ ë°ì´í„°ê°€ 있습니다" -#: access/transam/xlog.c:5964 +#: access/transam/xlog.c:5993 #, c-format msgid "database system was shut down at %s" msgstr "ë°ì´í„°ë² ì´ìФ 시스템 마지막 ê°€ë™ ì¤‘ì§€ 시ê°: %s" -#: access/transam/xlog.c:5969 +#: access/transam/xlog.c:5998 #, c-format msgid "database system was shut down in recovery at %s" msgstr "복구 중 ë°ì´í„°ë² ì´ìФ 시스템 마지막 ê°€ë™ ì¤‘ì§€ 시ê°: %s" -#: access/transam/xlog.c:5973 +#: access/transam/xlog.c:6002 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "" "ë°ì´í„°ë² ì´ìФ 시스템 셧다운 ìž‘ì—…ì´ ë¹„ì •ìƒì ìœ¼ë¡œ 종료ë˜ì—ˆìŒ; 마지막 ìš´ì˜ì‹œê°„: " "%s" -#: access/transam/xlog.c:5977 +#: access/transam/xlog.c:6006 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "ë°ì´í„°ë² ì´ìФ 시스템 복구하는 ë„중 비정ìƒì ìœ¼ë¡œ ê°€ë™ ì¤‘ì§€ëœ ì‹œê°: %s" -#: access/transam/xlog.c:5979 +#: access/transam/xlog.c:6008 #, c-format msgid "" "This probably means that some data is corrupted and you will have to use the " @@ -2430,12 +2446,12 @@ msgstr "" "ì´ ì‚¬íƒœëŠ” 몇몇 ë°ì´í„°ê°€ ì†ìƒë˜ì—ˆì„ ì˜ë¯¸í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 확ì¸í•´ ë³´ê³ , 필요하" "다면, 마지막 백업 ìžë£Œë¡œ 복구해서 사용하세요." -#: access/transam/xlog.c:5983 +#: 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:5985 +#: access/transam/xlog.c:6014 #, c-format msgid "" "If this has occurred more than once some data might be corrupted and you " @@ -2444,52 +2460,52 @@ msgstr "" "ì´ ì‚¬íƒœë¡œ 몇몇 ìžë£Œê°€ ì†ìƒë˜ì—ˆì„ ìˆ˜ë„ ìžˆëŠ”ë°, ì´ëŸ° 경우ë¼ë©´,확ì¸í•´ ë³´ê³ , í•„ìš”" "하다면, 마지막 백업 ìžë£Œë¡œ 복구해서 사용하세요." -#: access/transam/xlog.c:5989 +#: access/transam/xlog.c:6018 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ë¹„ì •ìƒì ìœ¼ë¡œ 종료ë˜ì—ˆìŒ; 마지막 ìš´ì˜ì‹œê°„: %s" -#: access/transam/xlog.c:6045 +#: access/transam/xlog.c:6074 #, c-format msgid "entering standby mode" msgstr "대기 모드로 전환합니다" -#: access/transam/xlog.c:6048 +#: access/transam/xlog.c:6077 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "%u XID까지 ì‹œì  ê¸°ë°˜ 복구 ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤" -#: access/transam/xlog.c:6052 +#: access/transam/xlog.c:6081 #, c-format msgid "starting point-in-time recovery to %s" msgstr "%s 까지 ì‹œì  ë³µêµ¬ ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤" -#: access/transam/xlog.c:6056 +#: access/transam/xlog.c:6085 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "\"%s\" 복구 ëŒ€ìƒ ì´ë¦„까지 ì‹œì  ë³µêµ¬ ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤" -#: access/transam/xlog.c:6060 +#: access/transam/xlog.c:6089 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "ë™ê¸°í™” í•  수 있는 마지막 ì§€ì ê¹Œì§€ ì‹œì  ë³µêµ¬ ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤" -#: access/transam/xlog.c:6063 +#: access/transam/xlog.c:6092 #, c-format msgid "starting archive recovery" msgstr "ì•„ì¹´ì´ë¸Œ 복구 ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤" -#: access/transam/xlog.c:6107 access/transam/xlog.c:6235 +#: 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:6121 +#: access/transam/xlog.c:6150 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "ì²´í¬í¬ì¸íЏ 기ë¡ìœ¼ë¡œ 참조하는 재실행 위치를 ì°¾ì„ ìˆ˜ ì—†ìŒ" -#: access/transam/xlog.c:6122 access/transam/xlog.c:6129 +#: 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/" @@ -2498,78 +2514,79 @@ msgstr "" "실시간 백업 ìžë£Œë¡œë¶€í„° 복구 ìž‘ì—…ì„ í•˜ì§€ 않으려면, \"%s/backup_lable\" 파ì¼ì„ " "ì‚­ì œ 하세요." -#: access/transam/xlog.c:6128 +#: access/transam/xlog.c:6157 #, c-format msgid "could not locate required checkpoint record" msgstr "ìš”ì²­ëœ ì²´í¬í¬ì¸íЏ ë ˆì½”ë“œì˜ ìœ„ì¹˜ë¥¼ 바르게 ìž¡ì„ ìˆ˜ ì—†ìŒ" -#: access/transam/xlog.c:6154 commands/tablespace.c:641 +#: 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:6186 access/transam/xlog.c:6192 +#: 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:6188 access/transam/xlog.c:10928 +#: 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:6194 +#: access/transam/xlog.c:6223 #, 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:6274 access/transam/xlog.c:6289 #, c-format msgid "could not locate a valid checkpoint record" msgstr "ì²´í¬í¬ì¸íЏ ë ˆì½”ë“œì˜ ìœ„ì¹˜ë¥¼ 바르게 ìž¡ì„ ìˆ˜ ì—†ìŒ" -#: access/transam/xlog.c:6254 +#: access/transam/xlog.c:6283 #, c-format msgid "using previous checkpoint record at %X/%X" msgstr "ì´ì „ ì²´í¬í¬ì¸íЏ 레코드를 사용함, 위치: %X/%X" -#: access/transam/xlog.c:6298 +#: 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:6300 +#: 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 위치ì—서 분기ë˜ì—ˆìŠµë‹ˆë‹¤." +"마지막 ì²´í¬í¬ì¸íЏ 위치는 %X/%X (%u 타임ë¼ì¸)입니다. 하지만, ìš”ì²­ë°›ì€ íƒ€ìž„ë¼" +"ì¸ ë‚´ì—­íŒŒì¼ì—는 ê·¸ 타임ë¼ì¸ %X/%X 위치ì—서 분기ë˜ì—ˆìŠµë‹ˆë‹¤." -#: access/transam/xlog.c:6316 +#: 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" +msgstr "" +"요청한 %u 타임ë¼ì¸ì€ %X/%X 최소 복구 위치가 없습니다, 기존 타임ë¼ì¸: %u" -#: access/transam/xlog.c:6347 +#: access/transam/xlog.c:6376 #, c-format msgid "invalid next transaction ID" msgstr "ìž˜ëª»ëœ ë‹¤ìŒ íŠ¸ëžœìž­ì…˜ ID" -#: access/transam/xlog.c:6430 +#: access/transam/xlog.c:6459 #, c-format msgid "invalid redo in checkpoint record" msgstr "ì²´í¬í¬ì¸íЏ 레코드 ì•ˆì— ìž˜ëª»ëœ redo ì •ë³´ê°€ 있ìŒ" -#: access/transam/xlog.c:6441 +#: access/transam/xlog.c:6470 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "ìš´ì˜ ì¤‘ì§€ ì²´í¬í¬ì¸íЏì—서 ìž˜ëª»ëœ ìž¬ì‹¤í–‰ ì •ë³´ 발견" -#: access/transam/xlog.c:6469 +#: access/transam/xlog.c:6498 #, c-format msgid "" "database system was not properly shut down; automatic recovery in progress" @@ -2577,253 +2594,255 @@ msgstr "" "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ì •ìƒì ìœ¼ë¡œ 종료ë˜ì§€ 못했습니다, ìžë™ 복구 ìž‘ì—…ì„ ì§„í–‰í•©" "니다" -#: access/transam/xlog.c:6473 +#: access/transam/xlog.c:6502 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" -msgstr "%u 타임ë¼ì¸ìœ¼ë¡œ ë¹„ì •ìƒ ì¤‘ì§€ì— ëŒ€í•œ ë³µêµ¬ìž‘ì—…ì„ ì‹œìž‘í•¨, 기존 타임ë¼ì¸: %u" +msgstr "" +"%u 타임ë¼ì¸ìœ¼ë¡œ ë¹„ì •ìƒ ì¤‘ì§€ì— ëŒ€í•œ ë³µêµ¬ìž‘ì—…ì„ ì‹œìž‘í•¨, 기존 타임ë¼ì¸: %u" -#: access/transam/xlog.c:6517 +#: access/transam/xlog.c:6546 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label íŒŒì¼ ì•ˆì— ì»¨íŠ¸ë¡¤ 파ì¼ê³¼ ì¼ê´€ì„±ì´ ë§žì§€ 않는 ìžë£Œê°€ 있ìŒ" -#: access/transam/xlog.c:6518 +#: 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:6592 +#: access/transam/xlog.c:6621 #, c-format msgid "initializing for hot standby" msgstr "ì½ê¸° ì „ìš© ë³´ì¡° 서버로 초기화 중입니다." -#: access/transam/xlog.c:6724 +#: access/transam/xlog.c:6753 #, c-format msgid "redo starts at %X/%X" msgstr "%X/%Xì—서 redo 작업 시작ë¨" -#: access/transam/xlog.c:6949 +#: access/transam/xlog.c:6978 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "요청한 복구 중지 ì§€ì ì´ ì¼ì¹˜í•˜ëŠ” 복구 ì§€ì  ì•žì— ìžˆìŒ" -#: access/transam/xlog.c:6987 +#: access/transam/xlog.c:7016 #, c-format msgid "redo done at %X/%X" msgstr "%X/%Xì—서 redo 작업 완료" -#: access/transam/xlog.c:6992 access/transam/xlog.c:8916 +#: 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:7001 +#: access/transam/xlog.c:7030 #, c-format msgid "redo is not required" msgstr "재반ì˜í•´ì•¼ í•  íŠ¸ëžœìž­ì…˜ì´ ì—†ìŒ" -#: access/transam/xlog.c:7076 access/transam/xlog.c:7080 +#: 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:7077 +#: access/transam/xlog.c:7106 #, c-format msgid "" "All WAL generated while online backup was taken must be available at " "recovery." msgstr "" -"온ë¼ì¸ 백업 중 만들어진 WAL ì¡°ê° íŒŒì¼ì€ 복구 작업ì—서 반드시 " -"ëª¨ë‘ ìžˆì–´ì•¼ 합니다." +"온ë¼ì¸ 백업 중 만들어진 WAL ì¡°ê° íŒŒì¼ì€ 복구 작업ì—서 반드시 ëª¨ë‘ ìžˆì–´ì•¼ 합니" +"다." -#: access/transam/xlog.c:7081 +#: 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 ì¡°ê° íŒŒì¼ì€ 복구 작업ì—서 ëª¨ë‘ í•„ìš”í•©ë‹ˆë‹¤." +"pg_start_backup() 함수를 호출해서 시작한 온ë¼ì¸ ë°±ì—…ì€ pg_stop_backup() 함수" +"로 종료ë˜ì–´ì•¼ 하며, ê·¸ ì‚¬ì´ ë§Œë“¤ì–´ì§„ WAL ì¡°ê° íŒŒì¼ì€ 복구 작업ì—서 ëª¨ë‘ í•„ìš”" +"합니다." -#: access/transam/xlog.c:7084 +#: access/transam/xlog.c:7113 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WALì´ ì¼ì¹˜í•˜ëŠ” 복구 ì§€ì  ì•žì—서 종료ë¨" -#: access/transam/xlog.c:7111 +#: access/transam/xlog.c:7140 #, c-format msgid "selected new timeline ID: %u" msgstr "지정한 새 타임ë¼ì¸ ID: %u" -#: access/transam/xlog.c:7522 +#: access/transam/xlog.c:7551 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "%X/%X 위치ì—서 복구 ì¼ê´€ì„±ì„ 맞춤" -#: access/transam/xlog.c:7713 +#: access/transam/xlog.c:7742 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "컨트롤 파ì¼ì—서 ìž˜ëª»ëœ primary checkpoint ë§í¬ 발견" -#: access/transam/xlog.c:7717 +#: access/transam/xlog.c:7746 #, c-format msgid "invalid secondary checkpoint link in control file" msgstr "컨트롤 파ì¼ì—서 ìž˜ëª»ëœ secondary checkpoint ë§í¬ 발견" -#: access/transam/xlog.c:7721 +#: access/transam/xlog.c:7750 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "백업 ë¼ë²¨ 파ì¼ì—서 ìž˜ëª»ëœ ì²´í¬í¬ì¸íЏ ë§í¬ 발견" -#: access/transam/xlog.c:7738 +#: access/transam/xlog.c:7767 #, c-format msgid "invalid primary checkpoint record" msgstr "ìž˜ëª»ëœ primary checkpoint 레코드" -#: access/transam/xlog.c:7742 +#: access/transam/xlog.c:7771 #, c-format msgid "invalid secondary checkpoint record" msgstr "ìž˜ëª»ëœ secondary checkpoint 레코드" -#: access/transam/xlog.c:7746 +#: access/transam/xlog.c:7775 #, c-format msgid "invalid checkpoint record" msgstr "ìž˜ëª»ëœ checkpoint 레코드" -#: access/transam/xlog.c:7757 +#: access/transam/xlog.c:7786 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "primary checkpoint 레코드ì—서 ìž˜ëª»ëœ ìžì› ê´€ë¦¬ìž ID 발견" -#: access/transam/xlog.c:7761 +#: access/transam/xlog.c:7790 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" msgstr "secondary checkpoint 레코드ì—서 ìž˜ëª»ëœ ìžì› ê´€ë¦¬ìž ID 발견" -#: access/transam/xlog.c:7765 +#: access/transam/xlog.c:7794 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "checkpoint 레코드ì—서 ìž˜ëª»ëœ ìžì› ê´€ë¦¬ìž ID 발견" -#: access/transam/xlog.c:7777 +#: access/transam/xlog.c:7806 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "primary checkpoint 레코드ì—서 ìž˜ëª»ëœ xl_info 발견" -#: access/transam/xlog.c:7781 +#: access/transam/xlog.c:7810 #, c-format msgid "invalid xl_info in secondary checkpoint record" msgstr "secondary checkpoint 레코드ì—서 ìž˜ëª»ëœ xl_info 발견" -#: access/transam/xlog.c:7785 +#: access/transam/xlog.c:7814 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "checkpoint 레코드ì—서 ìž˜ëª»ëœ xl_info 발견" -#: access/transam/xlog.c:7796 +#: access/transam/xlog.c:7825 #, c-format msgid "invalid length of primary checkpoint record" msgstr "primary checkpoint 레코드 길ì´ê°€ 잘못ë˜ì—ˆìŒ" -#: access/transam/xlog.c:7800 +#: access/transam/xlog.c:7829 #, c-format msgid "invalid length of secondary checkpoint record" msgstr "secondary checkpoint 레코드 길ì´ê°€ 잘못ë˜ì—ˆìŒ" -#: access/transam/xlog.c:7804 +#: access/transam/xlog.c:7833 #, c-format msgid "invalid length of checkpoint record" msgstr "checkpoint 레코드 길ì´ê°€ 잘못ë˜ì—ˆìŒ" -#: access/transam/xlog.c:7972 +#: access/transam/xlog.c:8001 #, c-format msgid "shutting down" msgstr "서비스를 멈추고 있습니다" -#: access/transam/xlog.c:8485 +#: access/transam/xlog.c:8514 #, c-format msgid "" "concurrent transaction log activity while database system is shutting down" msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ì¤‘ì§€ë˜ëŠ” ë™ì•ˆ 현재 트랜잭션 로그가 활성화 ë˜ì—ˆìŒ" -#: access/transam/xlog.c:8736 +#: access/transam/xlog.c:8768 #, c-format msgid "skipping restartpoint, recovery has already ended" msgstr "다시 시작 ì§€ì ì„ 건너뜀, 복구가 ì´ë¯¸ 종료ë¨" -#: access/transam/xlog.c:8759 +#: access/transam/xlog.c:8791 #, c-format msgid "skipping restartpoint, already performed at %X/%X" msgstr "다시 시작 ì§€ì ì„ 건너뜀, %X/%Xì—서 ì´ë¯¸ 수행ë¨" -#: access/transam/xlog.c:8914 +#: access/transam/xlog.c:8967 #, c-format msgid "recovery restart point at %X/%X" msgstr "%X/%Xì—서 복구 작업 시작함" -#: access/transam/xlog.c:9047 +#: access/transam/xlog.c:9100 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "\"%s\" ì´ë¦„ì˜ ë³µêµ¬ 위치는 %X/%Xì— ë§Œë“¤ì—ˆìŒ" -#: access/transam/xlog.c:9177 +#: 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)" +msgstr "" +"ì²´í¬í¬ì¸íЏ ë ˆì½”ë“œì— ì˜ˆê¸°ì¹˜ ì•Šì€ ì´ì „ 타임ë¼ì¸ID %u(현재 타임ë¼ì¸ID: %u)" -#: access/transam/xlog.c:9186 +#: 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:9202 +#: 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) 최소 복구 위치 ì´ì „" +"ì²´í¬í¬ì¸íЏ ë‚´ì—­ ì•ˆì— %u 타임ë¼ì¸ IDê°€ 기대한 것과 다릅니다. ë°œìƒ ìœ„ì¹˜: %X/%X " +"(타임ë¼ì¸: %u) 최소 복구 위치 ì´ì „" -#: access/transam/xlog.c:9273 +#: access/transam/xlog.c:9326 #, 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: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:9674 +#: access/transam/xlog.c:9727 #, c-format msgid "could not fsync log segment %s: %m" msgstr "%s 로그 ì¡°ê° fsync 실패: %m" -#: access/transam/xlog.c:9698 +#: access/transam/xlog.c:9751 #, c-format msgid "could not fsync log file %s: %m" msgstr "\"%s\" 로그 íŒŒì¼ fsync 실패: %m" -#: access/transam/xlog.c:9706 +#: 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:9715 +#: access/transam/xlog.c:9768 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "%s 로그파ì¼ì„ fdatasyncí•  수 ì—†ìŒ: %m" -#: access/transam/xlog.c:9806 access/transam/xlog.c:10277 +#: 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 @@ -2831,87 +2850,87 @@ msgstr "%s 로그파ì¼ì„ fdatasyncí•  수 ì—†ìŒ: %m" 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:9868 access/transam/xlog.c:10372 #, 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/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:9821 +#: access/transam/xlog.c:9874 #, 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: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:9854 +#: access/transam/xlog.c:9912 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "pg_stop_backup() 함수를 실행하고 나서 다시 시ë„하세요." -#: access/transam/xlog.c:9949 +#: 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 설정으로 " -"만들어진 내용입니다." +"마지막 재시작 위치부터 재반ì˜ëœ WAL ë‚´ìš©ì´ full_page_writes=off 설정으로 만들" +"ì–´ì§„ 내용입니다." -#: access/transam/xlog.c:9951 access/transam/xlog.c:10450 +#: 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 ëª…ë ¹ì„ ì‹¤í–‰í•˜ê³ , " -"온ë¼ì¸ ë°±ì—…ì„ ë‹¤ì‹œ 해서 사용하세요." +"ì´ ê²½ìš° 대기 ì„œë²„ì˜ ìžë£Œê°€ ì†ì‹¤ë˜ì—ˆì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤. full_page_writes 설" +"ì •ì„ í™œì„±í™” 하고, 주 서버ì—서 CHECKPOINT ëª…ë ¹ì„ ì‹¤í–‰í•˜ê³ , 온ë¼ì¸ ë°±ì—…ì„ ë‹¤ì‹œ " +"해서 사용하세요." -#: access/transam/xlog.c:10018 replication/basebackup.c:1038 +#: 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:10025 replication/basebackup.c:1043 +#: 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:10078 commands/tablespace.c:391 -#: commands/tablespace.c:553 replication/basebackup.c:1059 +#: 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:10119 access/transam/xlog.c:10157 -#: access/transam/xlog.c:10336 access/transam/xlogarchive.c:106 +#: 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: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 +#: 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:1001 +#: guc-file.l:1002 #, 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:10184 access/transam/xlog.c:10222 #, c-format msgid "" "If you're sure there is no backup in progress, remove file \"%s\" and try " @@ -2920,150 +2939,153 @@ msgstr "" "실재로는 백업 ìž‘ì—…ì„ ì•ˆí•˜ê³  있다고 확신한다면, \"%s\" 파ì¼ì„ 삭제하고 다시 시" "ë„í•´ 보십시오." -#: access/transam/xlog.c:10143 access/transam/xlog.c:10181 -#: access/transam/xlog.c:10511 +#: 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:10300 +#: access/transam/xlog.c:10388 #, c-format msgid "exclusive backup not in progress" msgstr "exclusive 백업 ìž‘ì—…ì„ í•˜ì§€ 않고 있습니다" -#: access/transam/xlog.c:10340 +#: access/transam/xlog.c:10415 #, 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: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:10402 replication/basebackup.c:936 +#: access/transam/xlog.c:10506 replication/basebackup.c:938 #, c-format msgid "the standby was promoted during online backup" -msgstr "" -"대기 서버가 온ë¼ì¸ 백업 중 주 서버로 전환ë˜ì—ˆìŠµë‹ˆë‹¤" +msgstr "대기 서버가 온ë¼ì¸ 백업 중 주 서버로 전환ë˜ì—ˆìŠµë‹ˆë‹¤" -#: access/transam/xlog.c:10403 replication/basebackup.c:937 +#: 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:10448 +#: 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 ë‚´ìš©ì´ ìž¬ë°˜ì˜ë˜ì—ˆìŠµë‹ˆë‹¤." +"온ë¼ì¸ 백업 ë„중 full_page_writes=off 설정으로 만들어진 WAL ë‚´ìš©ì´ ìž¬ë°˜ì˜ë˜ì—ˆ" +"습니다." -#: access/transam/xlog.c:10560 +#: 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 ì¡°ê° íŒŒì¼ì´ ì•„ì¹´ì´ë¸Œ ë˜ê¸¸ 기다리고 있습니다." +"pg_stop_backup ìž‘ì—…ì´ ë났습니다. 필요한 WAL ì¡°ê° íŒŒì¼ì´ ì•„ì¹´ì´ë¸Œ ë˜ê¸¸ 기다리" +"ê³  있습니다." -#: access/transam/xlog.c:10570 +#: 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:10572 +#: 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 ì¡°ê° ì—†ì´ëŠ” ì‚¬ìš©ë  ìˆ˜ 없습니다." +"archive_command ì„¤ì •ì„ ì‚´íŽ´ë³´ì„¸ìš”. pg_stop_backup ìž‘ì—…ì€ ì•ˆì „í•˜ê²Œ 취소 í•  " +"수 있지만, ë°ì´í„°ë² ì´ìФ ë°±ì—…ì€ ëª¨ë“  WAL ì¡°ê° ì—†ì´ëŠ” ì‚¬ìš©ë  ìˆ˜ 없습니다." -#: access/transam/xlog.c:10579 +#: access/transam/xlog.c:10683 #, c-format msgid "pg_stop_backup complete, all required WAL segments have been archived" msgstr "" -"pg_stop_backup ìž‘ì—…ì´ ë났습니다. 모든 필요한 WAL ì¡°ê°ë“¤ì´ ì•„ì¹´ì´ë¸Œ ë˜ì—ˆìŠµë‹ˆë‹¤." +"pg_stop_backup ìž‘ì—…ì´ ë났습니다. 모든 필요한 WAL ì¡°ê°ë“¤ì´ ì•„ì¹´ì´ë¸Œ ë˜ì—ˆìŠµë‹ˆ" +"다." -#: access/transam/xlog.c:10583 +#: 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 ì¡°ê° íŒŒì¼ë“¤ì„ ì§ì ‘ 찾아서 따로 보관해 ë‘어야 바르게 복구 í•  수 있습니다." +"모든 WAL ì¡°ê° íŒŒì¼ë“¤ì„ ì§ì ‘ 찾아서 따로 보관해 ë‘어야 바르게 복구 í•  수 있습" +"니다." #. translator: %s is an XLog record description -#: access/transam/xlog.c:10868 +#: 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:10917 +#: access/transam/xlog.c:11021 #, c-format msgid "online backup mode was not canceled" msgstr "온ë¼ì¸ 백업 모드가 취소ë˜ì§€ 않았ìŒ" -#: access/transam/xlog.c:10918 +#: 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:10927 access/transam/xlog.c:10939 -#: access/transam/xlog.c:10949 +#: 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:10940 +#: 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:10950 +#: 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." +"\"%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: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:11084 +#: 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:11558 +#: access/transam/xlog.c:11662 #, c-format msgid "received promote request" msgstr "ìš´ì˜ ì „í™˜ 신호를 받았습니다." -#: access/transam/xlog.c:11571 +#: access/transam/xlog.c:11675 #, c-format msgid "trigger file found: %s" msgstr "트리거 파ì¼ì´ 있ìŒ: %s" -#: access/transam/xlog.c:11580 +#: access/transam/xlog.c:11684 #, c-format msgid "could not stat trigger file \"%s\": %m" msgstr "\"%s\" 트리거 파ì¼ì˜ ìƒíƒœê°’ì„ ì•Œ 수 ì—†ìŒ: %m" @@ -3093,7 +3115,7 @@ 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 +#: 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" @@ -3111,7 +3133,8 @@ 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 ìž‘ì—…ì´ í˜¸ì¶œë˜ê¸° ì „ì— ë°±ì—”ë“œê°€ 종료ë˜ì–´ ë°±ì—…ì„ ì¤‘ì§€í•©ë‹ˆë‹¤." +msgstr "" +"pg_stop_backup ìž‘ì—…ì´ í˜¸ì¶œë˜ê¸° ì „ì— ë°±ì—”ë“œê°€ 종료ë˜ì–´ ë°±ì—…ì„ ì¤‘ì§€í•©ë‹ˆë‹¤." #: access/transam/xlogfuncs.c:88 #, c-format @@ -3120,9 +3143,9 @@ 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 +#: 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" @@ -3139,16 +3162,16 @@ 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 +#: 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:5423 executor/functions.c:1022 foreign/foreign.c:492 +#: 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:2763 +#: 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:8438 +#: 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" @@ -3157,12 +3180,12 @@ msgstr "" "당 ì—´ alias 지정하세요)" #: 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 +#: 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:2767 utils/adt/pgstatfuncs.c:558 -#: utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8442 utils/misc/pg_config.c:44 +#: 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" @@ -3367,7 +3390,7 @@ 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:2129 #, c-format msgid "could not read from log segment %s, offset %u, length %lu: %m" msgstr "%s 로그 ì¡°ê° ì½ê¸° 실패, 위치 %u, ê¸¸ì´ %lu: %m" @@ -3393,125 +3416,125 @@ msgstr "ìžì œí•œ ì‚¬í•­ì€ \"%s --help\" 명령으로 살펴보십시오.\n" 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 "grant ì˜µì…˜ë“¤ì€ ë¡¤ì—서만 ì§€ì •ë  ìˆ˜ 있습니다" -#: 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 ê¶Œí•œì€ ìŠ¤í‚¤ë§ˆ(schema)ì—서 사용할 수 ì—†ì€ ê¶Œí•œ 형태임" -#: 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 large object ì—†ìŒ" -#: catalog/aclchk.c:874 catalog/aclchk.c:882 commands/collationcmds.c:92 +#: 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 @@ -3522,9 +3545,9 @@ msgstr "%u large object ì—†ìŒ" #: 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: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 @@ -3547,424 +3570,424 @@ msgstr "%u large object ì—†ìŒ" 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 "default privileges ì„¤ì •ì€ ì¹¼ëŸ¼ 대ìƒìœ¼ë¡œ í•  수 ì—†ìŒ" -#: catalog/aclchk.c:1494 catalog/objectaddress.c:1390 commands/analyze.c:376 -#: commands/copy.c:4458 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: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:1763 catalog/objectaddress.c:1203 commands/sequence.c:1078 -#: commands/tablecmds.c:223 commands/tablecmds.c:12018 utils/adt/acl.c:2076 +#: 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: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 ì—´ 권한만 ì§€ì›í•¨" -#: 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 " "superusers can use untrusted languages." msgstr "" -"안전하지 ì•Šì€ í”„ë¡œì‹œì ¸ ì–¸ì–´ì— ëŒ€í•´ì„œëŠ” GRANT ë˜ëŠ” REVOKE ìž‘ì—…ì„ í—ˆìš©í•˜ì§€ " -"않습니다, 안전하지 ì•Šì€ í”„ë¡œì‹œì ¸ 언어는 슈í¼ìœ ì €ë§Œ 사용할 수 있기 때문입니다." +"안전하지 ì•Šì€ í”„ë¡œì‹œì ¸ ì–¸ì–´ì— ëŒ€í•´ì„œëŠ” 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:3146 #, 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 릴레ì´ì…˜(relation) ì ‘ê·¼ 권한 ì—†ìŒ" -#: 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 스키마(schema) ì ‘ê·¼ 권한 ì—†ìŒ" -#: 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 정렬정ì˜(collation) ì ‘ê·¼ 권한 ì—†ìŒ" -#: catalog/aclchk.c:3327 +#: catalog/aclchk.c:3335 #, c-format msgid "permission denied for conversion %s" msgstr "%s 문ìžì½”드변환규칙(conversion) ì ‘ê·¼ 권한 ì—†ìŒ" -#: 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 릴레ì´ì…˜(relation)ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" -#: 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 스키마(schema)ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" -#: 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 정렬정ì˜(collation)ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" -#: catalog/aclchk.c:3373 +#: catalog/aclchk.c:3381 #, c-format msgid "must be owner of conversion %s" msgstr "%s 문ìžì½”드변환규칙(conversion)ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" -#: 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 릴레ì´ì…˜(relation) ì—†ìŒ" -#: 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 정렬정ì˜(collation) ì—†ìŒ" -#: catalog/aclchk.c:5018 +#: catalog/aclchk.c:5026 #, c-format msgid "conversion with OID %u does not exist" msgstr "OID %u ì¸ì½”딩 변환규칙(conversion) ì—†ìŒ" -#: 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 "대신ì—, drop %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" @@ -3975,31 +3998,31 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: 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" msgstr[0] "%dê°œì˜ ë‹¤ë¥¸ ê°ì²´ì— 대한 관련 항목 ì‚­ì œ" -#: catalog/dependency.c:1634 +#: catalog/dependency.c:1633 #, c-format msgid "constant of the type \"regrole\" cannot be used here" msgstr "\"regrole\" ìžë£Œí˜• ìƒìˆ˜ëŠ” 여기서 사용할 수 ì—†ìŒ" @@ -4014,13 +4037,13 @@ msgstr "\"%s.%s\" 만들 ê¶Œí•œì´ ì—†ìŒ" msgid "System catalog modifications are currently disallowed." msgstr "시스템 카탈로그 ë³€ê²½ì€ í˜„ìž¬ 허용하지 않습니다." -#: catalog/heap.c:415 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 "한 í…Œì´ë¸”ì— ì§€ì •í•  수 있는 최대 ì—´ 수는 %d입니다" -#: catalog/heap.c:432 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 "\"%s\" ì—´ ì´ë¦„ì€ ì‹œìŠ¤í…œ ì—´ ì´ë¦„ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤" @@ -4054,10 +4077,11 @@ msgstr "%s 복합 ìžë£Œí˜•ì€ ìžê¸° ìžì‹ ì˜ 구성ì›ìœ¼ë¡œ 만들 수 ì—† #, c-format msgid "no collation was derived for column \"%s\" with collatable type %s" msgstr "" -"column \"%s\" ì¹¼ëŸ¼ì— ì‚¬ìš©í•˜ëŠ” %s ìžë£Œí˜•ì—서 사용할 ì •ë ¬ê·œì¹™ì„ ê²°ì •í•  수 없습니다." +"column \"%s\" ì¹¼ëŸ¼ì— ì‚¬ìš©í•˜ëŠ” %s ìžë£Œí˜•ì—서 사용할 ì •ë ¬ê·œì¹™ì„ ê²°ì •í•  수 없습" +"니다." #: catalog/heap.c:586 commands/createas.c:204 commands/createas.c:501 -#: commands/indexcmds.c:1132 commands/view.c:105 regex/regc_pg_locale.c:262 +#: 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 @@ -4067,7 +4091,7 @@ msgstr "" msgid "Use the COLLATE clause to set the collation explicitly." msgstr "명시ì ìœ¼ë¡œ ì •ë ¬ ê·œì¹™ì„ ì§€ì •í•˜ë ¤ë©´ COLLATE ì ˆì„ ì‚¬ìš©í•˜ì„¸ìš”." -#: catalog/heap.c:1067 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\" ì´ë¦„ì˜ ë¦´ë ˆì´ì…˜(relation)ì´ ì´ë¯¸ 있습니다" @@ -4085,109 +4109,109 @@ 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:2290 +#: catalog/heap.c:2291 #, c-format msgid "check constraint \"%s\" already exists" msgstr "\"%s\" ì´ë¦„ì˜ ì²´í¬ ì œì•½ ì¡°ê±´ì´ ì´ë¯¸ 있습니다" -#: catalog/heap.c:2455 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 "" "\"%s\" 제약 ì¡°ê±´ì´ ì´ë¯¸ \"%s\" 릴레ì´ì…˜(relation)ì—서 사용ë˜ê³  있습니다" -#: catalog/heap.c:2462 +#: catalog/heap.c:2463 #, c-format msgid "" "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" -msgstr "\"%s\" 제약 ì¡°ê±´ì´ ë¹„ìƒì† 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤, 해당 릴레ì´ì…˜: \"%s\"" +msgstr "" +"\"%s\" 제약 ì¡°ê±´ì´ ë¹„ìƒì† 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤, 해당 릴레ì´ì…˜: \"%s\"" -#: catalog/heap.c:2473 +#: catalog/heap.c:2474 #, c-format msgid "" "constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" msgstr "\"%s\" 제약 ì¡°ê±´ì´ ìƒì† 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤, 해당 릴레ì´ì…˜: \"%s\"" -#: catalog/heap.c:2483 +#: catalog/heap.c:2484 #, c-format msgid "" "constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" -msgstr "\"%s\" 제약 ì¡°ê±´ì´ NOT VALID 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤, 해당 릴레ì´ì…˜: \"%s\"" +msgstr "" +"\"%s\" 제약 ì¡°ê±´ì´ NOT VALID 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤, 해당 릴레ì´ì…˜: \"%s\"" -#: catalog/heap.c:2488 +#: catalog/heap.c:2489 #, c-format msgid "merging constraint \"%s\" with inherited definition" msgstr "\"%s\" 제약 ì¡°ê±´ì„ ìƒì†ëœ ì •ì˜ì™€ 병합하는 중" -#: catalog/heap.c:2594 +#: catalog/heap.c:2595 #, c-format msgid "cannot use column references in default expression" msgstr "default 표현ì‹ì—서는 ì—´ reference를 사용할 수 ì—†ìŒ" -#: catalog/heap.c:2605 +#: catalog/heap.c:2606 #, c-format msgid "default expression must not return a set" msgstr "default 표현ì‹ì€ í•˜ë‚˜ì˜ setì„ ë°˜í™˜í•˜ë©´ 안ë©ë‹ˆë‹¤" -#: catalog/heap.c:2624 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 "" "\"%s\" ì—´ì˜ ìžë£Œí˜•ì€ %s ì¸ë°, default 표현ì‹ì—서는 %s ìžë£Œí˜•ì„ ì‚¬ìš©í–ˆìŠµë‹ˆë‹¤" -#: catalog/heap.c:2629 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 "다시 ì •ì˜í•˜ê±°ë‚˜ 형변화ìžë¥¼ 사용해보십시오" -#: catalog/heap.c:2676 +#: catalog/heap.c:2677 #, c-format msgid "only table \"%s\" can be referenced in check constraint" msgstr "\"%s\" í…Œì´ë¸”ë§Œì´ ì²´í¬ ì œì•½ ì¡°ê±´ì—서 ì°¸ì¡°ë  ìˆ˜ 있습니다" -#: catalog/heap.c:2916 +#: catalog/heap.c:2917 #, c-format msgid "unsupported ON COMMIT and foreign key combination" msgstr "ON COMMIT ë° ì™¸ëž˜ 키 ì¡°í•©ì´ ì§€ì›ë˜ì§€ 않ìŒ" -#: catalog/heap.c:2917 +#: 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 ì„¤ì •ì´ ê°™ì§€ 않" -"습니다." +"\"%s\" í…Œì´ë¸”ì—서 \"%s\" í…Œì´ë¸”ì„ ì°¸ì¡°í•˜ëŠ”ë° ON COMMIT ì„¤ì •ì´ ê°™ì§€ 않습니다." -#: catalog/heap.c:2922 +#: catalog/heap.c:2923 #, c-format msgid "cannot truncate a table referenced in a foreign key constraint" msgstr "" "_^_ í…Œì´ë¸” ë‚´ìš©ì„ ëª¨ë‘ ì‚­ì œí•  수 ì—†ìŒ, 참조키(foreign key) 제약 ì¡°ê±´ 안ì—서" -#: catalog/heap.c:2923 +#: catalog/heap.c:2924 #, c-format msgid "Table \"%s\" references \"%s\"." msgstr "\"%s\" í…Œì´ë¸”ì€ \"%s\" ê°ì²´ë¥¼ 참조합니다." -#: catalog/heap.c:2925 +#: 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:1473 parser/parse_utilcmd.c:1559 #, c-format msgid "multiple primary keys for table \"%s\" are not allowed" msgstr "\"%s\" í…Œì´ë¸”ì—는 ì´ë¯¸ 기본키가 있습니다" @@ -4215,7 +4239,7 @@ msgstr "" "들 수 없습니다" #: catalog/index.c:784 commands/createas.c:249 commands/sequence.c:141 -#: parser/parse_utilcmd.c:192 +#: parser/parse_utilcmd.c:191 #, c-format msgid "relation \"%s\" already exists, skipping" msgstr "\"%s\" ì´ë¦„ì˜ ë¦´ë ˆì´ì…˜(relation)ì´ ì´ë¯¸ 있습니다, 건너뜀" @@ -4272,19 +4296,19 @@ msgstr "\"%s.%s\" 릴레ì´ì…˜ì˜ 잠금 정보를 구할 수 ì—†ìŒ" 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\" ì´ë¦„ì˜ ë¦´ë ˆì´ì…˜(relation)ì´ ì—†ìŠµë‹ˆë‹¤" -#: 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 "\"%s\" ì´ë¦„ì˜ ë¦´ë ˆì´ì…˜(relation)ì´ ì—†ìŠµë‹ˆë‹¤" -#: 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:1383 +#: commands/extension.c:1389 #, c-format msgid "no schema has been selected to create in" msgstr "ì„ íƒëœ 스키마 ì—†ìŒ, 대ìƒ:" @@ -4325,13 +4349,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:13450 gram.y:14819 +#: 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" @@ -4347,7 +4371,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/schemacmds.c:317 commands/tablecmds.c:741 #, c-format msgid "schema \"%s\" does not exist" msgstr "\"%s\" 스키마(schema) ì—†ìŒ" @@ -4384,7 +4408,7 @@ 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:9867 +#: utils/misc/guc.c:9875 #, c-format msgid "List syntax is invalid." msgstr "ëª©ë¡ ë¬¸ë²•ì´ í‹€ë ¸ìŠµë‹ˆë‹¤." @@ -4397,7 +4421,7 @@ msgstr "ì ‘ê·¼ 방법 ì´ë¦„ì´ ì ë‹¹ì¹˜ 않습니다" msgid "database name cannot be qualified" msgstr "ë°ì´í„°ë² ì´ìФ ì´ë¦„ì´ ì ë‹¹ì¹˜ 않습니다" -#: catalog/objectaddress.c:1071 commands/extension.c:2506 +#: catalog/objectaddress.c:1071 commands/extension.c:2507 #, c-format msgid "extension name cannot be qualified" msgstr "확장 모듈 ì´ë¦„으로 ì ë‹¹í•˜ì§€ 않습니다" @@ -4431,27 +4455,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:8017 #, 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:12023 commands/view.c:143 +#: 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:235 commands/tablecmds.c:12028 +#: 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:253 -#: commands/tablecmds.c:4379 commands/tablecmds.c:12033 +#: 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\" ê°ì²´ëŠ” 외부 í…Œì´ë¸”ì´ ì•„ë‹˜" @@ -4467,7 +4491,7 @@ 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: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 @@ -4843,14 +4867,12 @@ 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 í˜•ì„ ì‚¬ìš©í•´ì•¼ 합니다" +msgstr "variadic 순서있는 세트 집계함수는 VARIADIC ANY í˜•ì„ ì‚¬ìš©í•´ì•¼ 합니다" #: catalog/pg_aggregate.c:198 #, c-format @@ -4870,15 +4892,15 @@ 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:2301 +#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2334 #, c-format msgid "" "strictness of aggregate's forward and inverse transition functions must match" @@ -5019,7 +5041,7 @@ msgstr "\"%s\" ì´ë¦„ì˜ ë³€í™˜ê·œì¹™(conversion)ì´ ì´ë¯¸ 있ìŒ" msgid "default conversion for %s to %s already exists" msgstr "%s 코드ì—서 %s 코드로 변환하는 기본 변환규칙(conversion)ì€ ì´ë¯¸ 있ìŒ" -#: catalog/pg_depend.c:165 commands/extension.c:3028 +#: catalog/pg_depend.c:165 commands/extension.c:3029 #, c-format msgid "%s is already a member of extension \"%s\"" msgstr "%s ê°ì²´ëŠ” \"%s\" í™•ìž¥ëª¨ë“ˆì— ì´ë¯¸ 구성ì›ìž…니다" @@ -5062,7 +5084,8 @@ 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 êµ¬ë¬¸ì€ ì´ì§„ 업그레ì´ë“œ 작업ì—서 호환하지 않습니다" +msgstr "" +"ALTER TYPE ADD BEFORE/AFTER êµ¬ë¬¸ì€ ì´ì§„ 업그레ì´ë“œ 작업ì—서 호환하지 않습니다" #: catalog/pg_namespace.c:61 commands/schemacmds.c:246 #, c-format @@ -5140,8 +5163,7 @@ msgstr[0] "함수는 %dê°œ ì´ìƒì˜ ì¸ìžë¥¼ 사용할 수 ì—†ìŒ" msgid "" "A function returning a polymorphic type must have at least one polymorphic " "argument." -msgstr "" -"다형 형ì‹ì„ 반환하는 함수ì—는 다형 ì¸ìžê°€ 하나 ì´ìƒ 있어야 합니다." +msgstr "다형 형ì‹ì„ 반환하는 함수ì—는 다형 ì¸ìžê°€ 하나 ì´ìƒ 있어야 합니다." #: catalog/pg_proc.c:254 #, c-format @@ -5228,7 +5250,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 "\"%s\" SQL 함수" @@ -5334,8 +5356,8 @@ msgstr "_^_ ê³ ì •í¬ê¸° ìžë£Œí˜•ì€ PLAIN ì €ìž¥ë°©ë²•ì„ ê°€ì ¸ì•¼ë§Œ 합니 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:11911 +#: 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\" ê°ì²´ëŠ” í…Œì´ë¸”ë„ êµ¬ì²´í™”ëœ ë·°ë„ ì•„ë‹™ë‹ˆë‹¤" @@ -5508,7 +5530,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" @@ -5555,7 +5577,8 @@ msgstr "\"%s\" 건너뜀 --- 외부 í…Œì´ë¸”ì€ ë¶„ì„í•  수 ì—†ìŒ" #: commands/analyze.c:241 #, c-format msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables" -msgstr "\"%s\" 건너뜀 --- í…Œì´ë¸”ì´ ì•„ë‹ˆê±°ë‚˜, 특수 시스템 í…Œì´ë¸”ë“¤ì€ ë¶„ì„í•  수 ì—†ìŒ" +msgstr "" +"\"%s\" 건너뜀 --- í…Œì´ë¸”ì´ ì•„ë‹ˆê±°ë‚˜, 특수 시스템 í…Œì´ë¸”ë“¤ì€ ë¶„ì„í•  수 ì—†ìŒ" #: commands/analyze.c:320 #, c-format @@ -5578,8 +5601,8 @@ 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ê°œ" +"\"%s\": íƒìƒ‰í•œ 페ì´ì§€: %d, 전체페ì´ì§€: %u, 실ìžë£Œ: %.0fê°œ, 쓰레기ìžë£Œ: %.0f" +"ê°œ; 표본 추출 ìžë£Œ: %dê°œ, 예ìƒí•œ ì´ ìžë£Œ: %.0fê°œ" #: commands/analyze.c:1283 #, c-format @@ -5587,7 +5610,8 @@ msgid "" "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree " "contains no child tables" msgstr "" -"\"%s.%s\" ìƒì† ë‚˜ë¬´ì˜ í†µê³„ 수집 건너뜀 --- ì´ ìƒì† 나무ì—는 하위 í…Œì´ë¸”ì´ ì—†ìŒ" +"\"%s.%s\" ìƒì† ë‚˜ë¬´ì˜ í†µê³„ 수집 건너뜀 --- ì´ ìƒì† 나무ì—는 하위 í…Œì´ë¸”ì´ ì—†" +"ìŒ" #: commands/analyze.c:1372 #, c-format @@ -5595,9 +5619,10 @@ msgid "" "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree " "contains no analyzable child tables" msgstr "" -"\"%s.%s\" ìƒì† ë‚˜ë¬´ì˜ í†µê³„ 수집 건너뜀 --- ì´ ìƒì† 나무ì—는 통계 수집할 하위 í…Œì´ë¸”ì´ ì—†ìŒ" +"\"%s.%s\" ìƒì† ë‚˜ë¬´ì˜ í†µê³„ 수집 건너뜀 --- ì´ ìƒì† 나무ì—는 통계 수집할 하위 " +"í…Œì´ë¸”ì´ ì—†ìŒ" -#: commands/analyze.c:1420 executor/execQual.c:2927 +#: commands/analyze.c:1420 commands/tablecmds.c:8079 executor/execQual.c:2927 msgid "could not convert row type" msgstr "로우 ìžë£Œí˜•ì„ ë³€í™˜ í•  수 ì—†ìŒ" @@ -5621,7 +5646,8 @@ msgstr "payload 문ìžì—´ì´ 너무 긺" #, c-format msgid "" "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" -msgstr "LISTEN, UNLISTEN ë˜ëŠ” NOTIFY 옵션으로 ì‹¤í–‰ëœ íŠ¸ëžœìž­ì…˜ì„ PREPAREí•  수 ì—†ìŒ" +msgstr "" +"LISTEN, UNLISTEN ë˜ëŠ” NOTIFY 옵션으로 ì‹¤í–‰ëœ íŠ¸ëžœìž­ì…˜ì„ PREPAREí•  수 ì—†ìŒ" #: commands/async.c:856 #, c-format @@ -5637,8 +5663,7 @@ msgstr "NOTIFY í 사용률: %.0f%%" #, c-format msgid "" "The server process with PID %d is among those with the oldest transactions." -msgstr "" -"%d PID 서버 프로세스가 가장 ì˜¤ëž˜ëœ íŠ¸ëžœìž­ì…˜ì„ ì‚¬ìš©í•˜ê³  있습니다." +msgstr "%d PID 서버 프로세스가 가장 ì˜¤ëž˜ëœ íŠ¸ëžœìž­ì…˜ì„ ì‚¬ìš©í•˜ê³  있습니다." #: commands/async.c:1491 #, c-format @@ -5658,7 +5683,7 @@ msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ì€ cluster ìž‘ì—…ì„ í•  수 없습니 msgid "there is no previously clustered index for table \"%s\"" msgstr "\"%s\" í…Œì´ë¸”ì„ ìœ„í•œ previously clustered ì¸ë±ìŠ¤ê°€ ì—†ìŒ" -#: commands/cluster.c:173 commands/tablecmds.c:9286 commands/tablecmds.c:11013 +#: 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\" í…Œì´ë¸”ì— ì—†ìŒ" @@ -5673,7 +5698,7 @@ msgstr "ê³µìœ ëœ ì¹´íƒˆë¡œê·¸ëŠ” í´ëŸ¬ìŠ¤í„° ìž‘ì—…ì„ í•  수 ì—†ìŒ" msgid "cannot vacuum temporary tables of other sessions" msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ì€ vacuum ìž‘ì—…ì„ í•  수 ì—†ìŒ" -#: commands/cluster.c:431 commands/tablecmds.c:11023 +#: commands/cluster.c:431 commands/tablecmds.c:11153 #, c-format msgid "\"%s\" is not an index for table \"%s\"" msgstr "\"%s\" ê°ì²´ëŠ” \"%s\" í…Œì´ë¸”ì„ ìœ„í•œ ì¸ë±ìŠ¤ê°€ 아님" @@ -5763,13 +5788,14 @@ msgstr "\"%s\" ì •ë ¬ê·œì¹™ì´ \"%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:753 #, c-format msgid "" "\"%s\" is not a table, view, materialized view, composite type, or foreign " "table" msgstr "" -"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ë„, ë·°ë„, êµ¬ì²´í™”ëœ ë·°ë„, 복합 ìžë£Œí˜•ë„, 외부 í…Œì´ë¸”ë„ ì•„ë‹™ë‹ˆë‹¤." +"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ë„, ë·°ë„, êµ¬ì²´í™”ëœ ë·°ë„, 복합 ìžë£Œí˜•ë„, 외부 í…Œì´ë¸”ë„ ì•„" +"닙니다." #: commands/constraint.c:60 utils/adt/ri_triggers.c:2715 #, c-format @@ -5867,8 +5893,7 @@ msgstr "" #: commands/copy.c:879 #, c-format msgid "COPY FROM not supported with row-level security" -msgstr "" -"로우 단위 보안 기능으로 COPY FROM ëª…ë ¹ì„ ì‚¬ìš©í•  수 ì—†ìŒ" +msgstr "로우 단위 보안 기능으로 COPY FROM ëª…ë ¹ì„ ì‚¬ìš©í•  수 ì—†ìŒ" #: commands/copy.c:880 #, c-format @@ -5914,9 +5939,7 @@ msgstr "COPY 구분ìžëŠ” 1ë°”ì´íŠ¸ì˜ ë‹¨ì¼ ë¬¸ìžì—¬ì•¼ 함" #: commands/copy.c:1241 #, c-format msgid "COPY delimiter cannot be newline or carriage return" -msgstr "" -"COPY 명령ì—서 사용할 칼럼 구분ìžë¡œ 줄바꿈 문ìžë“¤ì„ 사용할 수 없습니" -"다" +msgstr "COPY 명령ì—서 사용할 칼럼 구분ìžë¡œ 줄바꿈 문ìžë“¤ì„ 사용할 수 없습니다" #: commands/copy.c:1247 #, c-format @@ -6174,7 +6197,8 @@ msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ì´ ì•„ë‹Œ 릴레ì´ì…˜(relation)ì´ê¸°ì— ë³µ #: commands/copy.c:2356 #, c-format msgid "cannot perform FREEZE because of prior transaction activity" -msgstr "먼저 시작한 다른 íŠ¸ëžœìž­ì…˜ì´ ì•„ì§ í™œì„± ìƒíƒœì—¬ì„œ FREEZE ìž‘ì—…ì€ ì§„í–‰í•  수 ì—†ìŒ" +msgstr "" +"먼저 시작한 다른 íŠ¸ëžœìž­ì…˜ì´ ì•„ì§ í™œì„± ìƒíƒœì—¬ì„œ FREEZE ìž‘ì—…ì€ ì§„í–‰í•  수 ì—†ìŒ" #: commands/copy.c:2362 #, c-format @@ -6182,8 +6206,8 @@ msgid "" "cannot perform FREEZE because the table was not created or truncated in the " "current subtransaction" msgstr "" -"현재 하위 트랜잭션ì—서 만들어지거나 비워진 í…Œì´ë¸”ì´ ì•„ë‹ˆê¸° ë•Œë¬¸ì— " -"FREEZE ìž‘ì—…ì„ í•  수 ì—†ìŒ" +"현재 하위 트랜잭션ì—서 만들어지거나 비워진 í…Œì´ë¸”ì´ ì•„ë‹ˆê¸° ë•Œë¬¸ì— FREEZE 작업" +"ì„ í•  수 ì—†ìŒ" #: commands/copy.c:2865 #, c-format @@ -6316,15 +6340,15 @@ msgstr "ìž˜ëª»ëœ í•„ë“œ í¬ê¸°" msgid "incorrect binary data format" msgstr "ìž˜ëª»ëœ ë°”ì´ë„ˆë¦¬ ìžë£Œ í¬ë§·" -#: commands/copy.c:4463 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: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:1489 commands/trigger.c:651 -#: parser/parse_target.c:956 parser/parse_target.c:967 +#: 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\" ì—´ì„ í•˜ë‚˜ ì´ìƒ 지정했ìŒ" @@ -6395,8 +6419,7 @@ 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 @@ -6404,8 +6427,8 @@ msgid "" "Use the same encoding as in the template database, or use template0 as " "template." msgstr "" -"템플릿 ë°ì´í„°ë² ì´ìŠ¤ì™€ ë™ì¼í•œ ì¸ì½”ë”©ì„ ì‚¬ìš©í•˜ê±°ë‚˜ template0ì„ í…œí”Œë¦¿" -"으로 사용하십시오." +"템플릿 ë°ì´í„°ë² ì´ìŠ¤ì™€ ë™ì¼í•œ ì¸ì½”ë”©ì„ ì‚¬ìš©í•˜ê±°ë‚˜ template0ì„ í…œí”Œë¦¿ìœ¼ë¡œ 사용" +"하십시오." #: commands/dbcommands.c:388 #, c-format @@ -6413,7 +6436,8 @@ msgid "" "new collation (%s) is incompatible with the collation of the template " "database (%s)" msgstr "" -"새 ë°ì´í„° ì •ë ¬ 규칙 (%s)ì´ í…œí”Œë¦¿ ë°ì´í„°ë² ì´ìŠ¤ì˜ ë°ì´í„° ì •ë ¬ 규칙(%s)ê³¼ 호환ë˜ì§€ 않ìŒ" +"새 ë°ì´í„° ì •ë ¬ 규칙 (%s)ì´ í…œí”Œë¦¿ ë°ì´í„°ë² ì´ìŠ¤ì˜ ë°ì´í„° ì •ë ¬ 규칙(%s)ê³¼ 호환" +"ë˜ì§€ 않ìŒ" #: commands/dbcommands.c:390 #, c-format @@ -6421,16 +6445,15 @@ msgid "" "Use the same collation as in the template database, or use template0 as " "template." msgstr "" -"템플릿 ë°ì´í„°ë² ì´ìŠ¤ì™€ ë™ì¼í•œ ë°ì´í„° ì •ë ¬ ê·œì¹™ì„ ì‚¬ìš©í•˜ê±°ë‚˜ template0ì„ " -"템플릿으로 사용하십시오." +"템플릿 ë°ì´í„°ë² ì´ìŠ¤ì™€ ë™ì¼í•œ ë°ì´í„° ì •ë ¬ ê·œì¹™ì„ ì‚¬ìš©í•˜ê±°ë‚˜ 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)ê³¼ 호환ë˜ì§€ 않ìŒ" +msgstr "새 LC_CTYPE (%s)ì´ í…œí”Œë¦¿ ë°ì´í„°ë² ì´ìŠ¤ì˜ LC_CTYPE (%s)ê³¼ 호환ë˜ì§€ 않ìŒ" #: commands/dbcommands.c:397 #, c-format @@ -6438,7 +6461,8 @@ msgid "" "Use the same LC_CTYPE as in the template database, or use template0 as " "template." msgstr "" -"템플릿 ë°ì´í„°ë² ì´ìŠ¤ì™€ ë™ì¼í•œ LC_CTYPEì„ ì‚¬ìš©í•˜ê±°ë‚˜ template0ì„ í…œí”Œë¦¿ìœ¼ë¡œ 사용하십시오." +"템플릿 ë°ì´í„°ë² ì´ìŠ¤ì™€ ë™ì¼í•œ LC_CTYPEì„ ì‚¬ìš©í•˜ê±°ë‚˜ template0ì„ í…œí”Œë¦¿ìœ¼ë¡œ 사" +"용하십시오." #: commands/dbcommands.c:419 commands/dbcommands.c:1113 #, c-format @@ -6534,7 +6558,8 @@ msgstr "현재 ì—´ë ¤ 있는 ë°ì´í„°ë² ì´ìŠ¤ì˜ í…Œì´ë¸”스페ì´ìŠ¤ë¥¼ ë°” #: commands/dbcommands.c:1194 #, c-format msgid "some relations of database \"%s\" are already in tablespace \"%s\"" -msgstr "\"%s\" ë°ì´í„°ë² ì´ìŠ¤ì˜ ì¼ë¶€ 릴레ì´ì…˜ë“¤ì´ \"%s\" í…Œì´ë¸”스페ì´ìŠ¤ì— ì´ë¯¸ 있ìŒ" +msgstr "" +"\"%s\" ë°ì´í„°ë² ì´ìŠ¤ì˜ ì¼ë¶€ 릴레ì´ì…˜ë“¤ì´ \"%s\" í…Œì´ë¸”스페ì´ìŠ¤ì— ì´ë¯¸ 있ìŒ" #: commands/dbcommands.c:1196 #, c-format @@ -6542,8 +6567,8 @@ 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 @@ -6574,8 +6599,7 @@ msgid "" "There are %d other session(s) and %d prepared transaction(s) using the " "database." msgstr "" -"ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하는 %dê°œì˜ ë‹¤ë¥¸ 세션과 %dê°œì˜ ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜" -"ì´ ìžˆìŠµë‹ˆë‹¤." +"ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하는 %dê°œì˜ ë‹¤ë¥¸ 세션과 %dê°œì˜ ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì´ ìžˆìŠµë‹ˆë‹¤." #: commands/dbcommands.c:1958 #, c-format @@ -6627,7 +6651,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:2080 #, c-format msgid "\"%s\" is an aggregate function" msgstr "\"%s\" 함수는 집계 함수입니다" @@ -6637,19 +6661,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:11388 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: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:745 +#: 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:246 +#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:247 #, c-format msgid "type \"%s\" does not exist, skipping" msgstr "\"%s\" ìžë£Œí˜• ì—†ìŒ, 건너뜀" @@ -6826,7 +6850,8 @@ 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 ì´ë²¤íЏ 트리거 함수 안ì—서만 호출 ë˜ì–´ì•¼ 합니다." +msgstr "" +"%s ê°ì²´ëŠ” table_rewrite ì´ë²¤íЏ 트리거 함수 안ì—서만 호출 ë˜ì–´ì•¼ 합니다." #: commands/event_trigger.c:1989 #, c-format @@ -6853,241 +6878,246 @@ msgstr "BUFFERS ì˜µì…˜ì€ EXPLAIN ANALYZEì—서만 쓸 수 있습니다." 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:2719 #, 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 "\"relocatable\" ê°’ì´ true ì¸ ê²½ìš° \"schema\" 매개 변수는 사용할 수 없습니다." +msgstr "" +"\"relocatable\" ê°’ì´ true ì¸ ê²½ìš° \"schema\" 매개 변수는 사용할 수 없습니다." -#: commands/extension.c:721 +#: commands/extension.c:722 #, c-format msgid "" "transaction control statements are not allowed within an extension script" msgstr "확장 모듈 스í¬ë¦½íЏ 안ì—서는 트랜잭션 제어 êµ¬ë¬¸ì€ ì‚¬ìš©í•  수 없습니다." -#: commands/extension.c:789 +#: commands/extension.c:790 #, c-format msgid "permission denied to create extension \"%s\"" msgstr "\"%s\" 확장 ëª¨ë“ˆì„ ë§Œë“¤ ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤" -#: commands/extension.c:791 +#: commands/extension.c:792 #, c-format msgid "Must be superuser to create this extension." msgstr "확장 ëª¨ë“ˆì€ ìŠˆí¼ìœ ì €ë§Œ 만들 수 있습니다." -#: commands/extension.c:795 +#: commands/extension.c:796 #, c-format msgid "permission denied to update extension \"%s\"" msgstr "\"%s\" 확장 ëª¨ë“ˆì„ ì—…ë°ì´íŠ¸í•  ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤." -#: commands/extension.c:797 +#: commands/extension.c:798 #, c-format msgid "Must be superuser to update this extension." msgstr "슈í¼ìœ ì €ë§Œ 해당 ëª¨ë“ˆì„ ì—…ë°ì´íЏ í•  수 있습니다." -#: commands/extension.c:1079 +#: commands/extension.c:1080 #, c-format msgid "" "extension \"%s\" has no update path from version \"%s\" to version \"%s\"" -msgstr "\"%s\" 확장 ëª¨ë“ˆì„ \"%s\" 버전ì—서 \"%s\" 버전으로 ì—…ë°ì´íŠ¸í•  ë°©ë²•ì´ ì—†ìŠµë‹ˆë‹¤." +msgstr "" +"\"%s\" 확장 ëª¨ë“ˆì„ \"%s\" 버전ì—서 \"%s\" 버전으로 ì—…ë°ì´íŠ¸í•  ë°©ë²•ì´ ì—†ìŠµë‹ˆ" +"다." -#: commands/extension.c:1261 commands/extension.c:2778 +#: commands/extension.c:1262 commands/extension.c:2779 #, c-format msgid "version to install must be specified" msgstr "설치할 ë²„ì „ì„ ì§€ì •í•´ì•¼ 합니다." -#: commands/extension.c:1278 +#: commands/extension.c:1279 #, c-format msgid "FROM version must be different from installation target version \"%s\"" msgstr "FROM ì ˆì— ì§€ì •í•œ ë²„ì „ì€ ì„¤ì¹˜ëœ \"%s\" 버전과 달ë¼ì•¼ 합니다" -#: commands/extension.c:1343 +#: commands/extension.c:1344 #, c-format msgid "extension \"%s\" must be installed in schema \"%s\"" msgstr "\"%s\" 확장 ëª¨ë“ˆì€ \"%s\" 스키마 ì•ˆì— ì„¤ì¹˜ë˜ì–´ì•¼ 합니다." -#: commands/extension.c:1435 +#: commands/extension.c:1436 #, c-format msgid "cyclic dependency detected between extensions \"%s\" and \"%s\"" msgstr "\"%s\" 확장 모듈과 \"%s\" 확장 ëª¨ë“ˆì´ ì„œë¡œ ì˜ì¡´ 관계입니다" -#: commands/extension.c:1440 +#: commands/extension.c:1441 #, c-format msgid "installing required extension \"%s\"" msgstr "\"%s\" 확장 ëª¨ë“ˆì´ í•„ìš”í•´ì„œ 실치 하는 중" -#: commands/extension.c:1468 commands/extension.c:2923 +#: commands/extension.c:1469 commands/extension.c:2924 #, c-format msgid "required extension \"%s\" is not installed" msgstr "\"%s\" 확장 ëª¨ë“ˆì´ í•„ìš”í•œë°, 설치ë˜ì–´ 있지 않습니다." -#: commands/extension.c:1470 +#: commands/extension.c:1471 #, c-format msgid "Use CREATE EXTENSION ... CASCADE to install required extensions too." -msgstr "필요한 ëª¨ë“ˆì„ í•¨ê»˜ 설치하려면, CREATE EXTENSION ... CASCADE êµ¬ë¬¸ì„ ì‚¬ìš©í•˜ì„¸ìš”." +msgstr "" +"필요한 ëª¨ë“ˆì„ í•¨ê»˜ 설치하려면, CREATE EXTENSION ... CASCADE êµ¬ë¬¸ì„ ì‚¬ìš©í•˜ì„¸" +"ìš”." -#: commands/extension.c:1534 +#: commands/extension.c:1535 #, c-format msgid "extension \"%s\" already exists, skipping" msgstr "\"%s\" 확장 ëª¨ë“ˆì´ ì´ë¯¸ 있ìŒ, 건너뜀" -#: commands/extension.c:1541 +#: commands/extension.c:1542 #, c-format msgid "extension \"%s\" already exists" msgstr "\"%s\" ì´ë¦„ì˜ í™•ìž¥ ëª¨ë“ˆì´ ì´ë¯¸ 있습니다" -#: commands/extension.c:1552 +#: commands/extension.c:1553 #, c-format msgid "nested CREATE EXTENSION is not supported" msgstr "ì¤‘ì²©ëœ CREATE EXTENSION êµ¬ë¬¸ì€ ì§€ì›í•˜ì§€ 않습니다." -#: commands/extension.c:1680 +#: commands/extension.c:1681 #, c-format msgid "cannot drop extension \"%s\" because it is being modified" msgstr "%s ì˜ì¡´ê°ì²´ë“¤ì€ 시스템 ê°ì²´ì´ê¸° ë•Œë¬¸ì— ì‚­ì œ ë  ìˆ˜ 없습니다" -#: commands/extension.c:2151 +#: 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 스í¬ë¦½íЏ ë‚´ì—서만 사용할 수 있습니다." +"pg_extension_config_dump() 함수는 CREATE EXTENSION 명령ì—서 ë‚´ë¶€ì ìœ¼ë¡œ 사용하" +"는 SQL 스í¬ë¦½íЏ ë‚´ì—서만 사용할 수 있습니다." -#: commands/extension.c:2163 +#: commands/extension.c:2164 #, c-format msgid "OID %u does not refer to a table" msgstr "%u OID ìžë£Œê°€ í…Œì´ë¸”ì— ì—†ìŠµë‹ˆë‹¤" -#: commands/extension.c:2168 +#: commands/extension.c:2169 #, c-format msgid "table \"%s\" is not a member of the extension being created" msgstr "\"%s\" í…Œì´ë¸”ì€ ë§Œë“¤ë ¤ê³  하는 확장 ëª¨ë“ˆì˜ êµ¬ì„± 요소가 아닙니다." -#: commands/extension.c:2533 +#: commands/extension.c:2534 #, c-format msgid "" "cannot move extension \"%s\" into schema \"%s\" because the extension " "contains the schema" -msgstr "" -"\"%s\" 확장 ëª¨ë“ˆì´ \"%s\" ìŠ¤í‚¤ë§ˆì— ì´ë¯¸ 있어 옮길 수 없습니다." +msgstr "\"%s\" 확장 ëª¨ë“ˆì´ \"%s\" ìŠ¤í‚¤ë§ˆì— ì´ë¯¸ 있어 옮길 수 없습니다." -#: commands/extension.c:2573 commands/extension.c:2636 +#: 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:2638 +#: commands/extension.c:2639 #, c-format msgid "%s is not in the extension's schema \"%s\"" msgstr "%s ê°ì²´ê°€ 확장 모듈 ìŠ¤í‚¤ë§ˆì¸ \"%s\" ì•ˆì— ì—†ìŒ" -#: commands/extension.c:2698 +#: commands/extension.c:2699 #, c-format msgid "nested ALTER EXTENSION is not supported" msgstr "ì¤‘ì²©ëœ ALTER EXTENSION êµ¬ë¬¸ì„ ì§€ì›í•˜ì§€ 않ìŒ" -#: commands/extension.c:2789 +#: commands/extension.c:2790 #, c-format msgid "version \"%s\" of extension \"%s\" is already installed" msgstr "\"%s\" ë²„ì „ì˜ \"%s\" 확장 ëª¨ë“ˆì´ ì´ë¯¸ 설치 ë˜ì–´ 있ìŒ" -#: commands/extension.c:3040 +#: commands/extension.c:3041 #, c-format msgid "" "cannot add schema \"%s\" to extension \"%s\" because the schema contains the " "extension" msgstr "" -"\"%s\" ìŠ¤í‚¤ë§ˆì— \"%s\" 확장 ëª¨ë“ˆì„ ì¶”ê°€í•  수 ì—†ìŒ, ì´ë¯¸ 해당 스키마 ì•ˆì— í¬í•¨ë˜ì–´ 있ìŒ" +"\"%s\" ìŠ¤í‚¤ë§ˆì— \"%s\" 확장 ëª¨ë“ˆì„ ì¶”ê°€í•  수 ì—†ìŒ, ì´ë¯¸ 해당 스키마 ì•ˆì— í¬" +"함ë˜ì–´ 있ìŒ" -#: commands/extension.c:3058 +#: commands/extension.c:3069 #, c-format msgid "%s is not a member of extension \"%s\"" msgstr "\"%s\" ê°ì²´ëŠ” \"%s\" 확장 ëª¨ë“ˆì˜ êµ¬ì„± 요소가 아닙니다" -#: commands/extension.c:3114 +#: commands/extension.c:3135 #, c-format msgid "file \"%s\" is too large" msgstr "\"%s\" 파ì¼ì´ 너무 í½ë‹ˆë‹¤." @@ -7148,7 +7178,8 @@ msgid "" "changing the foreign-data wrapper handler can change behavior of existing " "foreign tables" msgstr "" -"외부 ìžë£Œ ëž©í¼ í•¸ë“¤ëŸ¬ë¥¼ 바꾸면, ê·¸ê²ƒì„ ì‚¬ìš©í•˜ëŠ” 외부 í…Œì´ë¸”ì˜ ë‚´ìš©ì´ ë°”ë€” 수 있습니다." +"외부 ìžë£Œ ëž©í¼ í•¸ë“¤ëŸ¬ë¥¼ 바꾸면, ê·¸ê²ƒì„ ì‚¬ìš©í•˜ëŠ” 외부 í…Œì´ë¸”ì˜ ë‚´ìš©ì´ ë°”ë€” 수 " +"있습니다." #: commands/foreigncmds.c:747 #, c-format @@ -7156,8 +7187,8 @@ msgid "" "changing the foreign-data wrapper validator can cause the options for " "dependent objects to become invalid" msgstr "" -"외부 ìžë£Œ ëž˜í¼ ìœ íš¨ì„± 검사기를 바꾸면 ì¢…ì† ê°ì²´ì— 대한 ì˜µì…˜ì´ ìœ " -"효하지 ì•Šì„ ìˆ˜ 있ìŒ" +"외부 ìžë£Œ ëž˜í¼ ìœ íš¨ì„± 검사기를 바꾸면 ì¢…ì† ê°ì²´ì— 대한 ì˜µì…˜ì´ ìœ íš¨í•˜ì§€ ì•Šì„ " +"수 있ìŒ" #: commands/foreigncmds.c:1165 #, c-format @@ -7375,8 +7406,8 @@ msgid "" "argument of cast function must match or be binary-coercible from source data " "type" msgstr "" -"형변환 í•¨ìˆ˜ì˜ ì¸ìžë¡œ 쓸 ìžë£Œí˜•ì€ ì›ë³¸ ìžë£Œí˜•ê³¼ ì¼ì¹˜í•˜ê±°ë‚˜ " -"ë°”ì´ë„ˆë¦¬ ì°¨ì›ìœ¼ë¡œ ê°™ì€ ìžë£Œí˜•ì´ì–´ì•¼ 함" +"형변환 í•¨ìˆ˜ì˜ ì¸ìžë¡œ 쓸 ìžë£Œí˜•ì€ ì›ë³¸ ìžë£Œí˜•ê³¼ ì¼ì¹˜í•˜ê±°ë‚˜ ë°”ì´ë„ˆë¦¬ ì°¨ì›ìœ¼ë¡œ " +"ê°™ì€ ìžë£Œí˜•ì´ì–´ì•¼ 함" #: commands/functioncmds.c:1482 #, c-format @@ -7394,8 +7425,8 @@ msgid "" "return data type of cast function must match or be binary-coercible to " "target data type" msgstr "" -"형변환 í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì€ ëŒ€ìƒ ìžë£Œí˜•ê³¼ ì¼ì¹˜í•˜ê±°ë‚˜ " -"ë°”ì´ë„ˆë¦¬ ì°¨ì›ìœ¼ë¡œ ê°™ì€ ìžë£Œí˜•ì´ì–´ì•¼ 함" +"형변환 í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì€ ëŒ€ìƒ ìžë£Œí˜•ê³¼ ì¼ì¹˜í•˜ê±°ë‚˜ ë°”ì´ë„ˆë¦¬ ì°¨ì›ìœ¼ë¡œ ê°™ì€ " +"ìžë£Œí˜•ì´ì–´ì•¼ 함" #: commands/functioncmds.c:1501 #, c-format @@ -7505,14 +7536,12 @@ msgstr "%s ìžë£Œí˜•ì€ ë„ë©”ì¸ìž…니다" #: commands/functioncmds.c:1859 #, c-format msgid "return data type of FROM SQL function must be \"internal\"" -msgstr "" -"FROM SQL í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì€ \"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 í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì€ ë³€í™˜ ìžë£Œí˜•ì´ì–´ì•¼ 함" +msgstr "TO SQL í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì€ ë³€í™˜ ìžë£Œí˜•ì´ì–´ì•¼ 함" #: commands/functioncmds.c:1911 #, c-format @@ -7559,89 +7588,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:9694 #, 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 "hash ì¸ë±ìŠ¤ëŠ” WAL 기ë¡ì„ 하지 않습니다. ì´ ì‚¬ìš©ì€ ê¶Œìž¥í•˜ì§€ 않습니다" -#: 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\" ì¸ë±ìФ ì ‘ê·¼ ë°©ë²•ì€ 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 "시스템 카탈로그 í…Œì´ë¸”ì— ëŒ€í•œ ì¸ë±ìФ 만들기는 ì§€ì›í•˜ì§€ 않습니다" -#: 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 "" "ì¸ë±ìФ 술어(predicate)ì—서 사용하는 함수는 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 "키ì—서 지정한 \"%s\" ì—´ì´ ì—†ìŠµë‹ˆë‹¤" -#: commands/indexcmds.c:1108 +#: commands/indexcmds.c:1109 #, c-format msgid "functions in index expression must be marked IMMUTABLE" msgstr "ì¸ë±ìФ ì‹(expression)ì— ì‚¬ìš©í•˜ëŠ” 함수는 IMMUTABLE íŠ¹ì„±ì´ ìžˆì–´ì•¼í•©ë‹ˆë‹¤" -#: commands/indexcmds.c:1131 +#: commands/indexcmds.c:1132 #, c-format msgid "could not determine which collation to use for index expression" msgstr "해당 ì¸ë±ìФì—서 사용할 정렬규칙(collation)ì„ ê²°ì •í•  수 없습니다." -#: 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 "%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 "exclude 제약조건용 ì¸ë±ìŠ¤ë¥¼ 만들 때는 êµí™˜ë²•ì¹™ì´ ì„±ë¦½í•˜ëŠ” ì—°ì‚°ìžë§Œ 사용할 수 있습니다." +msgstr "" +"exclude 제약조건용 ì¸ë±ìŠ¤ë¥¼ 만들 때는 êµí™˜ë²•ì¹™ì´ ì„±ë¦½í•˜ëŠ” ì—°ì‚°ìžë§Œ 사용할 수 " +"있습니다." -#: 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 " @@ -7649,24 +7680,24 @@ msgid "" 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\" ì¸ë±ìФ 액세스 ë°©ë²•ì„ ìœ„í•œ 기본 ì—°ì‚°ìž í´ëž˜ìФ(operator " "class)ê°€ 없습니다. " -#: commands/indexcmds.c:1306 +#: commands/indexcmds.c:1307 #, c-format msgid "" "You must specify an operator class for the index or define a default " @@ -7675,34 +7706,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 "열려있는 현재 ë°ì´í„°ë² ì´ìФì—서만 reindex ëª…ë ¹ì„ ì‚¬ìš©í•  수 있습니다" -#: commands/indexcmds.c:1992 +#: commands/indexcmds.c:1993 #, c-format msgid "table \"%s.%s\" was reindexed" msgstr "\"%s.%s\" í…Œì´ë¸”ì˜ ì¸ë±ìŠ¤ë“¤ì„ ë‹¤ì‹œ 만들었습니다." @@ -7710,7 +7741,9 @@ msgstr "\"%s.%s\" í…Œì´ë¸”ì˜ ì¸ë±ìŠ¤ë“¤ì„ ë‹¤ì‹œ 만들었습니다." #: commands/matview.c:181 #, c-format msgid "CONCURRENTLY cannot be used when the materialized view is not populated" -msgstr "êµ¬ì²´í™”ëœ ë·°ì˜ ìžë£Œê°€ 정리ë˜ê³  ìžˆì„ ë•ŒëŠ” CONCURRENTLY ì˜µì…˜ì„ ì‚¬ìš©í•  수 없습니다." +msgstr "" +"êµ¬ì²´í™”ëœ ë·°ì˜ ìžë£Œê°€ 정리ë˜ê³  ìžˆì„ ë•ŒëŠ” CONCURRENTLY ì˜µì…˜ì„ ì‚¬ìš©í•  수 없습니" +"다." #: commands/matview.c:187 #, c-format @@ -7728,7 +7761,8 @@ msgid "" "Create a unique index with no WHERE clause on one or more columns of the " "materialized view." msgstr "" -"êµ¬ì²´í™”ëœ ë·°ì˜ í•˜ë‚˜ ë˜ëŠ” 하나 ì´ìƒì˜ ì¹¼ëŸ¼ì— ëŒ€í•œ WHERE ì ˆ 없는 고유 ì¸ë±ìŠ¤ë¥¼ 만드세요." +"êµ¬ì²´í™”ëœ ë·°ì˜ í•˜ë‚˜ ë˜ëŠ” 하나 ì´ìƒì˜ ì¹¼ëŸ¼ì— ëŒ€í•œ WHERE ì ˆ 없는 고유 ì¸ë±ìŠ¤ë¥¼ " +"만드세요." #: commands/matview.c:657 #, c-format @@ -7736,7 +7770,8 @@ msgid "" "new data for materialized view \"%s\" contains duplicate rows without any " "null columns" msgstr "" -"\"%s\" êµ¬ì²´í™”ëœ ë·°ì˜ ìƒˆ ìžë£Œì— 아무런 null 칼럼 ì—†ì´ ì¤‘ë³µëœ ë¡œìš°ë¥¼ í¬í•¨í•˜ê³  있습니다" +"\"%s\" êµ¬ì²´í™”ëœ ë·°ì˜ ìƒˆ ìžë£Œì— 아무런 null 칼럼 ì—†ì´ ì¤‘ë³µëœ ë¡œìš°ë¥¼ í¬í•¨í•˜ê³  " +"있습니다" #: commands/matview.c:659 #, c-format @@ -7849,7 +7884,8 @@ msgstr "btree ë¹„êµ í”„ë¡œì‹œì €ëŠ” 반드시 integer ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼ #: commands/opclasscmds.c:1185 #, c-format msgid "btree sort support procedures must accept type \"internal\"" -msgstr "btree ì •ë ¬ ì§€ì› í”„ë¡œì‹œì €ëŠ” 반드시 \"internal\" ìžë£Œí˜• ìž…ë ¥ ì¸ìžë¡œ 사용해야함" +msgstr "" +"btree ì •ë ¬ ì§€ì› í”„ë¡œì‹œì €ëŠ” 반드시 \"internal\" ìžë£Œí˜• ìž…ë ¥ ì¸ìžë¡œ 사용해야함" #: commands/opclasscmds.c:1189 #, c-format @@ -7915,8 +7951,7 @@ msgstr "" msgid "" "operator family \"%s\" for access method \"%s\" already exists in schema \"%s" "\"" -msgstr "" -"\"%s\" ì—°ì‚°ìž íŒ¨ë°€ë¦¬(ì ‘ê·¼ 방법: \"%s\")ê°€ \"%s\" ìŠ¤í‚¤ë§ˆì— ì´ë¯¸ 있ìŒ" +msgstr "\"%s\" ì—°ì‚°ìž íŒ¨ë°€ë¦¬(ì ‘ê·¼ 방법: \"%s\")ê°€ \"%s\" ìŠ¤í‚¤ë§ˆì— ì´ë¯¸ 있ìŒ" #: commands/operatorcmds.c:114 commands/operatorcmds.c:122 #, c-format @@ -7954,10 +7989,10 @@ 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:11944 -#: commands/tablecmds.c:11979 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: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 @@ -8119,8 +8154,7 @@ msgstr "ë¡œë“œëœ ë³´ì•ˆ ë¼ë²¨ 제공ìžê°€ ì—†ìŒ" #, c-format msgid "" "must specify provider when multiple security label providers have been loaded" -msgstr "" -"다중 보안 ë ˆì´ë¸” 제공ìžê°€ 로드 ë  ë•Œ 제공ìžë¥¼ 지정해야 합니다." +msgstr "다중 보안 ë ˆì´ë¸” 제공ìžê°€ 로드 ë  ë•Œ 제공ìžë¥¼ 지정해야 합니다." #: commands/seclabel.c:82 #, c-format @@ -8217,162 +8251,162 @@ msgstr "시퀀스 ë° ì´ ì‹œí€€ìŠ¤ê°€ ì—°ê²°ëœ í…Œì´ë¸”ì˜ ì†Œìœ ì£¼ê°€ ê°™ msgid "sequence must be in same schema as table it is linked to" 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\" ë·°(view) ì—†ìŒ" -#: commands/tablecmds.c:228 +#: commands/tablecmds.c:229 #, c-format msgid "view \"%s\" does not exist, skipping" msgstr "\"%s\" ë·°(view) ì—†ìŒ, 무시함" -#: 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:1630 #, 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:11205 +#: 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: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\" ê°ì²´ì˜ ìžë£Œë„ 함께 ì‚­ì œë¨" -#: commands/tablecmds.c:1322 +#: commands/tablecmds.c:1323 #, c-format msgid "cannot truncate temporary tables of other sessions" msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸” ìžë£ŒëŠ” 비울(truncate) 수 없습니다" -#: 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 "ìƒì†í•  \"%s\" 릴레ì´ì…˜(relation)ì€ í…Œì´ë¸”ë„, 외부 í…Œì´ë¸”ë„ ì•„ë‹™ë‹ˆë‹¤" -#: commands/tablecmds.c:1535 commands/tablecmds.c:10053 +#: commands/tablecmds.c:1536 commands/tablecmds.c:10150 #, 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:10158 #, 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:10192 #, 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 @@ -8380,76 +8414,77 @@ msgstr "ìƒìœ„ í…Œì´ë¸”ì—서 지정한 \"%s\" ì—´ì˜ ìžë£Œí˜•ë“¤ì´ ì¼ì¹˜í•˜ 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:4767 #, 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: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: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 "\"%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\" ì—´ ìžë£Œí˜•ê³¼ ì´ ì—´ì— ì§€ì •í•œ default ê°’ì˜ ìžë£Œí˜•ì´ ì„œë¡œ 다릅니" "다" -#: commands/tablecmds.c:1914 +#: commands/tablecmds.c:1915 #, c-format msgid "To resolve the conflict, specify a default explicitly." msgstr "ì´ ì¶©ëŒì„ 피하려면, default ê°’ì„ ë°”ë¥´ê²Œ 지정하십시오." -#: commands/tablecmds.c:1961 +#: commands/tablecmds.c:1962 #, c-format msgid "" "check constraint name \"%s\" appears multiple times but with different " @@ -8457,670 +8492,691 @@ msgid "" 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 " "foreign table" msgstr "" -"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ë„, ë·°ë„, êµ¬ì²´í™”ëœ ë·°ë„, 복합 ìžë£Œí˜•ë„, ì¸ë±ìФë„, 외부 í…Œì´ë¸”ë„ ì•„ë‹™ë‹ˆë‹¤." +"\"%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\" ì œì•½ì¡°ê±´ì€ í•˜ìœ„ í…Œì´ë¸”ì—ì„œë„ ì´ë¦„ì´ ë°”ë€Œì–´ì•¼ 함" +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" msgstr "ì´ ì„¸ì…˜ì˜ í™œì„± 쿼리ì—서 사용 중ì´ë¯€ë¡œ %s \"%s\" ìž‘ì—…ì„ í•  수 ì—†ìŒ" #. 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\" 시스템 릴레ì´ì…˜ì„ 다시 쓰기(rewrite) í•  수 ì—†ìŒ" -#: commands/tablecmds.c:3790 +#: commands/tablecmds.c:3791 #, c-format msgid "cannot rewrite table \"%s\" used as a catalog table" msgstr "카탈로그 í…Œì´ë¸”로 사용ë˜ì–´ \"%s\" í…Œì´ë¸”ì„ rewrite 못함" -#: commands/tablecmds.c:3800 +#: commands/tablecmds.c:3801 #, c-format msgid "cannot rewrite temporary tables of other sessions" msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ì„ ë‹¤ì‹œ 쓰기(rewrite) í•  수 ì—†ìŒ" -#: 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:7385 #, c-format msgid "check constraint \"%s\" is violated by some row" msgstr "\"%s\" ì²´í¬ ì œì•½ ì¡°ê±´ì„ ìœ„ë°˜í•˜ëŠ” 몇몇 ìžë£Œê°€ ì´ë¯¸ 있습니다" -#: 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\" ê°ì²´ëŠ” í…Œì´ë¸”ë„ ë·°ë„ ì•„ë‹™ë‹ˆë‹¤" -#: 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:5426 #, c-format msgid "\"%s\" is not a table, materialized view, index, or foreign table" -msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, êµ¬ì²´í™”ëœ ë·°, ì¸ë±ìФ, 외부 í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤." +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: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:4549 +#: 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:4556 +#: 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:4618 +#: commands/tablecmds.c:4619 #, c-format msgid "cannot alter type \"%s\" because it is the type of a typed table" -msgstr "\"%s\" ìžë£Œí˜•ì„ ë³€ê²½í•  수 ì—†ìŒ, ì´ ìžë£Œí˜•ì€ typed í…Œì´ë¸”ì˜ ìžë£Œí˜•ì´ê¸° 때문" +msgstr "" +"\"%s\" ìžë£Œí˜•ì„ ë³€ê²½í•  수 ì—†ìŒ, ì´ ìžë£Œí˜•ì€ typed í…Œì´ë¸”ì˜ ìžë£Œí˜•ì´ê¸° 때문" -#: commands/tablecmds.c:4620 +#: commands/tablecmds.c:4621 #, c-format msgid "Use ALTER ... CASCADE to alter the typed tables too." msgstr "" -"ì´ ê°ì²´ì™€ ê´€ê³„ëœ ëª¨ë“  ê°ì²´ë“¤ì„ 함께 변경하려면 ALTER ... CASCADE ëª…ë ¹ì„ ì‚¬ìš©í•˜" -"십시오" +"ì´ ê°ì²´ì™€ ê´€ê³„ëœ ëª¨ë“  ê°ì²´ë“¤ì„ 함께 변경하려면 ALTER ... CASCADE ëª…ë ¹ì„ ì‚¬ìš©" +"하십시오" -#: commands/tablecmds.c:4664 +#: commands/tablecmds.c:4665 #, c-format msgid "type %s is not a composite type" msgstr "%s ìžë£Œí˜•ì€ ë³µí•© ìžë£Œí˜•ì´ ì•„ë‹™ë‹ˆë‹¤" -#: commands/tablecmds.c:4690 +#: commands/tablecmds.c:4691 #, c-format msgid "cannot add column to typed table" msgstr "typed í…Œì´ë¸”ì—는 ì¹¼ëŸ¼ì„ ì¶”ê°€ í•  수 ì—†ìŒ" -#: commands/tablecmds.c:4758 commands/tablecmds.c:10254 +#: 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:4764 commands/tablecmds.c:10261 +#: commands/tablecmds.c:4765 commands/tablecmds.c:10358 #, c-format msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "" -"\"%s\" ìƒì†ëœ í…Œì´ë¸”ì˜ \"%s\" 칼럼 ì •ë ¬ê·œì¹™ì´ ìƒìœ„ í…Œì´ë¸”ì˜ ì •ë ¬ê·œì¹™ê³¼ 틀립니다" +"\"%s\" ìƒì†ëœ í…Œì´ë¸”ì˜ \"%s\" 칼럼 ì •ë ¬ê·œì¹™ì´ ìƒìœ„ í…Œì´ë¸”ì˜ ì •ë ¬ê·œì¹™ê³¼ 틀립니" +"다" -#: commands/tablecmds.c:4774 +#: commands/tablecmds.c:4775 #, c-format msgid "child table \"%s\" has a conflicting \"%s\" column" msgstr "\"%s\" 하위 í…Œì´ë¸”ì— ì¶©ëŒí•˜ëŠ” \"%s\" ì¹¼ëŸ¼ì´ ìžˆìŒ" -#: commands/tablecmds.c:4786 +#: commands/tablecmds.c:4787 #, c-format msgid "merging definition of column \"%s\" for child \"%s\"" msgstr "\"%s\" ì—´(\"%s\" 하위)ì˜ ì •ì˜ë¥¼ 병합하는 중" -#: commands/tablecmds.c:5013 +#: commands/tablecmds.c:5014 #, c-format msgid "column must be added to child tables too" msgstr "하위 í…Œì´ë¸”ì—ë„ ì—´ì„ ì¶”ê°€í•´ì•¼ 함" -#: commands/tablecmds.c:5088 +#: commands/tablecmds.c:5089 #, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" msgstr "\"%s\" ì´ë¦„ì˜ ì¹¼ëŸ¼ì´ \"%s\" 릴레ì´ì…˜ì— ì´ë¯¸ 있습니다, 건너뜀" -#: commands/tablecmds.c:5095 +#: commands/tablecmds.c:5096 #, 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: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:5242 +#: commands/tablecmds.c:5243 #, c-format msgid "column \"%s\" is in a primary key" msgstr "\"%s\" ì—´ì€ ê¸°ë³¸í‚¤ 열입니다" -#: commands/tablecmds.c:5457 +#: commands/tablecmds.c:5458 #, c-format msgid "statistics target %d is too low" msgstr "ëŒ€ìƒ í†µê³„ê°’(%d)ì´ ë„ˆë¬´ 낮습니다" -#: commands/tablecmds.c:5465 +#: commands/tablecmds.c:5466 #, c-format msgid "lowering statistics target to %d" msgstr "%d 값으로 ëŒ€ìƒ í†µê³„ê°’ì„ ë‚®ì¶¥ë‹ˆë‹¤" -#: commands/tablecmds.c:5615 +#: commands/tablecmds.c:5616 #, c-format msgid "invalid storage type \"%s\"" msgstr "ìž˜ëª»ëœ STORAGE ê°’: \"%s\"" -#: commands/tablecmds.c:5647 +#: commands/tablecmds.c:5648 #, c-format msgid "column data type %s can only have storage PLAIN" msgstr "%s ìžë£Œí˜•ì˜ columnì˜ STORAGE ê°’ì€ ë°˜ë“œì‹œ PLAIN ì´ì–´ì•¼í•©ë‹ˆë‹¤" -#: commands/tablecmds.c:5685 +#: commands/tablecmds.c:5686 #, c-format msgid "cannot drop column from typed table" msgstr "typed í…Œì´ë¸”ì—서 ì¹¼ëŸ¼ì„ ì‚­ì œí•  수 ì—†ìŒ" -#: commands/tablecmds.c:5729 +#: commands/tablecmds.c:5730 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" msgstr "\"%s\" ì¹¼ëŸ¼ì€ \"%s\" 릴레ì´ì…˜ì— ì—†ìŒ, 건너뜀" -#: commands/tablecmds.c:5742 +#: commands/tablecmds.c:5743 #, c-format msgid "cannot drop system column \"%s\"" msgstr "\"%s\" ì¹¼ëŸ¼ì€ ì‹œìŠ¤í…œ 칼럼입니다, ì‚­ì œë  ìˆ˜ 없습니다" -#: commands/tablecmds.c:5749 +#: commands/tablecmds.c:5750 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "\"%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 ìž‘ì—…ì€ \"%s\" ì¸ë±ìŠ¤ë¥¼ \"%s\" ì´ë¦„으로 바꿀 것입니다." +"ALTER TABLE / ADD CONSTRAINT USING INDEX ìž‘ì—…ì€ \"%s\" ì¸ë±ìŠ¤ë¥¼ \"%s\" ì´ë¦„으" +"로 바꿀 것입니다." -#: commands/tablecmds.c:6202 +#: commands/tablecmds.c:6203 #, c-format msgid "constraint must be added to child tables too" msgstr "하위 í…Œì´ë¸”ì—ë„ ì œì•½ ì¡°ê±´ì„ ì¶”ê°€í•´ì•¼ 함" -#: commands/tablecmds.c:6273 +#: commands/tablecmds.c:6274 #, c-format msgid "referenced relation \"%s\" is not a table" msgstr "참조ë˜ëŠ” \"%s\" 릴레ì´ì…˜ì€ í…Œì´ë¸”ì´ ì•„ë‹™ë‹ˆë‹¤" -#: commands/tablecmds.c:6296 +#: commands/tablecmds.c:6297 #, c-format msgid "constraints on permanent tables may reference only permanent tables" msgstr "ì˜êµ¬ 저장용 í…Œì´ë¸”ì˜ ì œì•½ ì¡°ê±´ì€ ì˜êµ¬ 저장용 í…Œì´ë¸”ì„ ì°¸ì¡° 합니다." -#: commands/tablecmds.c:6303 +#: commands/tablecmds.c:6304 #, c-format msgid "" "constraints on unlogged tables may reference only permanent or unlogged " "tables" -msgstr "unlogged í…Œì´ë¸”ì˜ ì œì•½ ì¡°ê±´ì€ ì˜êµ¬ 저장용 í…Œì´ë¸” ë˜ëŠ” unlogged í…Œì´ë¸”ì„ ì°¸ì¡°í•©ë‹ˆë‹¤." +msgstr "" +"unlogged í…Œì´ë¸”ì˜ ì œì•½ ì¡°ê±´ì€ ì˜êµ¬ 저장용 í…Œì´ë¸” ë˜ëŠ” unlogged í…Œì´ë¸”ì„ ì°¸ì¡°" +"합니다." -#: commands/tablecmds.c:6309 +#: commands/tablecmds.c:6310 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "임시 í…Œì´ë¸”ì˜ ì œì•½ ì¡°ê±´ì€ ìž„ì‹œ í…Œì´ë¸”ì— ëŒ€í•´ì„œë§Œ 참조할 것입니다." -#: commands/tablecmds.c:6313 +#: commands/tablecmds.c:6314 #, c-format msgid "" "constraints on temporary tables must involve temporary tables of this session" -msgstr "임시 í…Œì´ë¸”ì˜ ì œì•½ ì¡°ê±´ì€ ì´ ì„¸ì…˜ìš© 임시 í…Œì´ë¸”ì— ëŒ€í•´ì„œë§Œ ì ìš© ë©ë‹ˆë‹¤." +msgstr "" +"임시 í…Œì´ë¸”ì˜ ì œì•½ ì¡°ê±´ì€ ì´ ì„¸ì…˜ìš© 임시 í…Œì´ë¸”ì— ëŒ€í•´ì„œë§Œ ì ìš© ë©ë‹ˆë‹¤." -#: commands/tablecmds.c:6374 +#: commands/tablecmds.c:6375 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" msgstr "참조키(foreign key) disagree를 위한 참조하는, ë˜ëŠ” 참조ë˜ëŠ” ì—´ 수" -#: commands/tablecmds.c:6481 +#: commands/tablecmds.c:6482 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" msgstr "\"%s\" 참조키(foreign key) 제약 ì¡°ê±´ì€ êµ¬í˜„ë˜ì–´ì§ˆ 수 없습니다" -#: commands/tablecmds.c:6484 +#: 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:6691 commands/tablecmds.c:6841 -#: commands/tablecmds.c:7723 commands/tablecmds.c:7779 +#: 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:6697 +#: commands/tablecmds.c:6698 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" msgstr "\"%s\" 제약 ì¡°ê±´(해당 í…Œì´ë¸”: \"%s\")ì€ ì°¸ì¡°í‚¤ ì œì•½ì¡°ê±´ì´ ì•„ë‹™ë‹ˆë‹¤." -#: 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 "\"%s\" 제약 ì¡°ê±´(해당 í…Œì´ë¸”: \"%s\")ì€ ì°¸ì¡°í‚¤ë„ ì²´í¬ ì œì•½ ì¡°ê±´ë„ ì•„ë‹™ë‹ˆë‹¤." +msgstr "" +"\"%s\" 제약 ì¡°ê±´(해당 í…Œì´ë¸”: \"%s\")ì€ ì°¸ì¡°í‚¤ë„ ì²´í¬ ì œì•½ ì¡°ê±´ë„ ì•„ë‹™ë‹ˆë‹¤." -#: commands/tablecmds.c:6916 +#: commands/tablecmds.c:6935 #, c-format msgid "constraint must be validated on child tables too" msgstr "하위 í…Œì´ë¸”ì—ë„ ì œì•½ ì¡°ê±´ì´ ìœ íš¨í•´ì•¼ 함" -#: commands/tablecmds.c:6985 +#: commands/tablecmds.c:7004 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "참조키(foreign key) 제약 ì¡°ê±´ì—서 참조하는 \"%s\" ì—´ì´ ì—†ìŒ" -#: commands/tablecmds.c:6990 +#: commands/tablecmds.c:7009 #, c-format msgid "cannot have more than %d keys in a foreign key" msgstr "참조키(foreign key)ì—서 %d 키 개수보다 ë§Žì´ ê°€ì§ˆ 수 ì—†ìŒ" -#: commands/tablecmds.c:7055 +#: commands/tablecmds.c:7074 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "참조ë˜ëŠ” \"%s\" í…Œì´ë¸”ì˜ ì§€ì—° 가능한 기본키를 사용할 수 ì—†ìŒ" -#: commands/tablecmds.c:7072 +#: commands/tablecmds.c:7091 #, c-format msgid "there is no primary key for referenced table \"%s\"" msgstr "참조ë˜ëŠ” \"%s\" í…Œì´ë¸”ì—는 기본키(primary key)ê°€ 없습니다" -#: commands/tablecmds.c:7137 +#: commands/tablecmds.c:7156 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" msgstr "ì°¸ì¡°í‚¤ì˜ ì°¸ì¡° 칼럼 목ë¡ì— ì¹¼ëŸ¼ì´ ì¤‘ë³µë˜ë©´ 안ë©ë‹ˆë‹¤" - -#: commands/tablecmds.c:7231 +#: commands/tablecmds.c:7250 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "참조ë˜ëŠ” \"%s\" í…Œì´ë¸”ì˜ ì§€ì—° 가능한 ìœ ë‹ˆí¬ ì œì•½ ì¡°ê±´ì„ ì‚¬ìš©í•  수 ì—†ìŒ" -#: commands/tablecmds.c:7236 +#: commands/tablecmds.c:7255 #, c-format msgid "" "there is no unique constraint matching given keys for referenced table \"%s\"" msgstr "" "참조ë˜ëŠ” \"%s\" í…Œì´ë¸”ì„ ìœ„í•œ 주워진 키와 ì¼ì¹˜í•˜ëŠ” 고유 제약 ì¡°ê±´ì´ ì—†ìŠµë‹ˆë‹¤" -#: commands/tablecmds.c:7399 +#: commands/tablecmds.c:7418 #, c-format msgid "validating foreign key constraint \"%s\"" msgstr "\"%s\" 참조키 제약 ì¡°ê±´ 검사 중" -#: commands/tablecmds.c:7695 +#: commands/tablecmds.c:7717 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" msgstr "ìƒì†ëœ \"%s\" 제약 ì¡°ê±´(해당 í…Œì´ë¸”: \"%s\")ì„ ì‚­ì œí•  수 ì—†ìŒ" -#: commands/tablecmds.c:7729 +#: commands/tablecmds.c:7769 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" msgstr "\"%s\" 제약 ì¡°ê±´(해당 í…Œì´ë¸”: \"%s\")ì´ ì—†ìŒ, 건너뜀" -#: commands/tablecmds.c:7868 +#: commands/tablecmds.c:7908 #, c-format msgid "cannot alter column type of typed table" msgstr "typed í…Œì´ë¸”ì˜ ì¹¼ëŸ¼ ìžë£Œí˜•ì€ ë³€ê²½í•  수 ì—†ìŒ" -#: commands/tablecmds.c:7891 +#: commands/tablecmds.c:7931 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "\"%s\" ì´ë¦„ì˜ ì—´ì€ ìƒì† ë°›ì€ ì—´ìž…ë‹ˆë‹¤, ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" -#: commands/tablecmds.c:7940 +#: 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 ìžë£Œí˜•으로 ìžë™ í˜•ë³€í™˜ì„ " -"í•  수 ì—†ìŒ" +"\"%s\" 칼럼ì—서 ì“°ì¸ USING ì ˆì˜ ê²°ê³¼ê°€ %s ìžë£Œí˜•으로 ìžë™ í˜•ë³€í™˜ì„ í•  수 ì—†ìŒ" -#: commands/tablecmds.c:7943 +#: commands/tablecmds.c:7983 #, c-format msgid "You might need to add an explicit cast." msgstr "ëª…ì‹œì  í˜•ë³€í™˜ì„ í•´ì•¼í•  것 같습니다." -#: commands/tablecmds.c:7947 +#: 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:7950 +#: commands/tablecmds.c:7990 #, c-format msgid "You might need to specify \"USING %s::%s\"." msgstr "\"USING %s::%s\" êµ¬ë¬¸ì„ ì¶”ê°€í•´ì•¼ í•  것 같습니다." -#: commands/tablecmds.c:8003 +#: 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:8090 +#: commands/tablecmds.c:8187 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "\"%s\" ì—´ì€ ì‹œìŠ¤í…œ 열입니다. 그래서 ë³€ê²½ë  ìˆ˜ 없습니다" -#: commands/tablecmds.c:8126 +#: commands/tablecmds.c:8223 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "\"%s\" ì¹¼ëŸ¼ì˜ ê¸°ë³¸ ê°’ì„ %s 형으로 형변환할 수 ì—†ìŒ" -#: commands/tablecmds.c:8252 +#: commands/tablecmds.c:8349 #, 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:8350 commands/tablecmds.c:8369 +#: commands/tablecmds.c:8387 #, c-format msgid "%s depends on column \"%s\"" msgstr "%s ì˜ì¡´ëŒ€ìƒ ì—´: \"%s\"" -#: commands/tablecmds.c:8271 +#: commands/tablecmds.c:8368 #, c-format msgid "cannot alter type of a column used in a trigger definition" msgstr "트리거 ì •ì˜ì—서 사용하는 ì¹¼ëŸ¼ì˜ ìžë£Œí˜•ì„ ë³€ê²½í•  수 ì—†ìŒ" -#: commands/tablecmds.c:8289 +#: commands/tablecmds.c:8386 #, c-format msgid "cannot alter type of a column used in a policy definition" msgstr "ì •ì±… ì •ì˜ì—서 사용하는 ì¹¼ëŸ¼ì˜ ìžë£Œí˜•ì„ ë³€ê²½í•  수 ì—†ìŒ" -#: commands/tablecmds.c:8954 +#: commands/tablecmds.c:9051 #, c-format msgid "cannot change owner of index \"%s\"" msgstr "\"%s\" ì¸ë±ìŠ¤ì˜ ì†Œìœ ì£¼ë¥¼ 바꿀 수 ì—†ìŒ" -#: commands/tablecmds.c:8956 +#: commands/tablecmds.c:9053 #, c-format msgid "Change the ownership of the index's table, instead." msgstr "ëŒ€ì‹ ì— ê·¸ ì¸ë±ìŠ¤ì˜ í•´ë‹¹ í…Œì´ë¸” 소유ìžì„ 변경하세요." -#: commands/tablecmds.c:8972 +#: commands/tablecmds.c:9069 #, c-format msgid "cannot change owner of sequence \"%s\"" msgstr "\"%s\" ì‹œí€€ìŠ¤ì˜ ì†Œìœ ì£¼ë¥¼ 바꿀 수 ì—†ìŒ" -#: commands/tablecmds.c:8974 commands/tablecmds.c:11407 +#: commands/tablecmds.c:9071 commands/tablecmds.c:11543 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." msgstr "\"%s\" 시퀀스는 \"%s\" í…Œì´ë¸”ì— ì¢…ì†ë˜ì–´ 있습니다." -#: commands/tablecmds.c:8986 commands/tablecmds.c:12054 +#: commands/tablecmds.c:9083 commands/tablecmds.c:12190 #, c-format msgid "Use ALTER TYPE instead." msgstr "대신 ALTER TYPEì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤." -#: commands/tablecmds.c:8995 +#: commands/tablecmds.c:9092 #, c-format msgid "\"%s\" is not a table, view, sequence, or foreign table" msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, ë·°, 시퀀스, 외부 í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤" -#: commands/tablecmds.c:9338 +#: commands/tablecmds.c:9435 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "SET TABLESPACE êµ¬ë¬¸ì´ ì¤‘ë³µ 사용ë˜ì—ˆìŠµë‹ˆë‹¤" -#: commands/tablecmds.c:9411 +#: commands/tablecmds.c:9508 #, c-format msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table" -msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, ë·°, êµ¬ì²´í™”ëœ ë·°, ì¸ë±ìФ, TOAST í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤." +msgstr "" +"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, ë·°, êµ¬ì²´í™”ëœ ë·°, ì¸ë±ìФ, TOAST í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™" +"니다." -#: commands/tablecmds.c:9444 commands/view.c:469 +#: 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 ì˜µì…˜ì€ ìžë™ 갱신 가능한 ë·°ì— ëŒ€í•´ì„œë§Œ 사용할 수 있습니다" +msgstr "" +"WITH CHECK OPTION ì˜µì…˜ì€ ìžë™ 갱신 가능한 ë·°ì— ëŒ€í•´ì„œë§Œ 사용할 수 있습니다" -#: commands/tablecmds.c:9590 +#: commands/tablecmds.c:9687 #, c-format msgid "cannot move system relation \"%s\"" msgstr "\"%s\" 시스템 릴레ì´ì…˜ìž…니다. ì´ë™í•  수 없습니다" -#: commands/tablecmds.c:9606 +#: commands/tablecmds.c:9703 #, c-format msgid "cannot move temporary tables of other sessions" msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ë“¤ì€ ì´ë™í•  수 없습니다" -#: commands/tablecmds.c:9743 +#: commands/tablecmds.c:9840 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" msgstr "í…Œì´ë¸”스페ì´ìŠ¤ì— í…Œì´ë¸”ê³¼ ì¸ë±ìŠ¤ì™€ êµ¬ì²´í™”ëœ ë·°ë§Œ 있습니다." -#: commands/tablecmds.c:9755 +#: commands/tablecmds.c:9852 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" -msgstr "해당 ê°ì²´ë¥¼ pg_global í…Œì´ë¸”스페ì´ìŠ¤ë¡œ 옮기거나 ê·¸ 반대로 작업할 수 ì—†ìŒ" +msgstr "" +"해당 ê°ì²´ë¥¼ pg_global í…Œì´ë¸”스페ì´ìŠ¤ë¡œ 옮기거나 ê·¸ 반대로 작업할 수 ì—†ìŒ" -#: commands/tablecmds.c:9846 +#: commands/tablecmds.c:9943 #, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" msgstr "\"%s.%s\" 릴레ì´ì…˜ì„ 잠글 수 없어 중지 중입니다" -#: commands/tablecmds.c:9862 +#: commands/tablecmds.c:9959 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr "ê²€ìƒ‰ì¡°ê±´ì— ì¼ì¹˜í•˜ëŠ” 릴레ì´ì…˜ì´ \"%s\" í…Œì´ë¸”스페ì´ìŠ¤ì— ì—†ìŒ" -#: commands/tablecmds.c:9936 storage/buffer/bufmgr.c:915 +#: 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:10018 +#: commands/tablecmds.c:10115 #, c-format msgid "cannot change inheritance of typed table" msgstr "typed í…Œì´ë¸”ì˜ ìƒì† 정보는 변경할 수 ì—†ìŒ" -#: commands/tablecmds.c:10068 +#: commands/tablecmds.c:10165 #, c-format msgid "cannot inherit to temporary relation of another session" msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ì„ ìƒì†í•  수 ì—†ìŒ" -#: commands/tablecmds.c:10122 +#: commands/tablecmds.c:10219 #, c-format msgid "circular inheritance not allowed" msgstr "순환 ë˜ëŠ” ìƒì†ì€ 허용하지 않습니다" -#: commands/tablecmds.c:10123 +#: commands/tablecmds.c:10220 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "\"%s\" ê°ì²´ëŠ” ì´ë¯¸ \"%s\" ê°ì²´ë¡œë¶€í„° ìƒì†ë°›ì€ ìƒíƒœìž…니다." -#: commands/tablecmds.c:10131 +#: 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:10272 +#: commands/tablecmds.c:10369 #, c-format msgid "column \"%s\" in child table must be marked NOT NULL" msgstr "ìžì‹ í…Œì´ë¸”ì˜ \"%s\" ì—´ì€ NOT NULL ì†ì„±ì´ 있어야합니다" -#: commands/tablecmds.c:10288 +#: commands/tablecmds.c:10385 commands/tablecmds.c:10418 #, c-format msgid "child table is missing column \"%s\"" msgstr "ìžì‹ í…Œì´ë¸”ì—는 \"%s\" ì—´ì´ ì—†ìŠµë‹ˆë‹¤" -#: commands/tablecmds.c:10371 +#: commands/tablecmds.c:10501 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "\"%s\" 하위 í…Œì´ë¸”ì— \"%s\" ì²´í¬ ì œì•½ ì¡°ê±´ì— ëŒ€í•œ 다른 ì •ì˜ê°€ 있ìŒ" -#: commands/tablecmds.c:10379 +#: commands/tablecmds.c:10509 #, c-format msgid "" "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s" "\"" -msgstr "\"%s\" 제약 ì¡°ê±´ì´ \"%s\" 하위 í…Œì´ë¸”ì— ìžˆëŠ” 비 ìƒì† 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤" +msgstr "" +"\"%s\" 제약 ì¡°ê±´ì´ \"%s\" 하위 í…Œì´ë¸”ì— ìžˆëŠ” 비 ìƒì† 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤" -#: commands/tablecmds.c:10390 +#: commands/tablecmds.c:10520 #, c-format msgid "" "constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" -msgstr "\"%s\" 제약 ì¡°ê±´ì´ \"%s\" 하위 í…Œì´ë¸”ì— ìžˆëŠ” NOT VALID 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤" +msgstr "" +"\"%s\" 제약 ì¡°ê±´ì´ \"%s\" 하위 í…Œì´ë¸”ì— ìžˆëŠ” NOT VALID 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤" -#: commands/tablecmds.c:10414 +#: commands/tablecmds.c:10544 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "ìžì‹ í…Œì´ë¸”ì— \"%s\" 제약 ì¡°ê±´ì´ ì—†ìŠµë‹ˆë‹¤" -#: commands/tablecmds.c:10498 +#: commands/tablecmds.c:10628 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" msgstr "\"%s\" 릴레ì´ì…˜ì€ \"%s\" 릴레ì´ì…˜ì˜ 부모가 아닙니다" -#: commands/tablecmds.c:10732 +#: commands/tablecmds.c:10862 #, c-format msgid "typed tables cannot inherit" msgstr "typed í…Œì´ë¸”ì€ ìƒì†í•  수 ì—†ìŒ" -#: commands/tablecmds.c:10763 +#: commands/tablecmds.c:10893 #, c-format msgid "table is missing column \"%s\"" msgstr "í…Œì´ë¸”ì—는 \"%s\" ì¹¼ëŸ¼ì´ ì—†ìŠµë‹ˆë‹¤" -#: commands/tablecmds.c:10773 +#: commands/tablecmds.c:10903 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" msgstr "\"%s\" ì¹¼ëŸ¼ì€ \"%s\" ìžë£Œí˜•입니다." -#: commands/tablecmds.c:10782 +#: commands/tablecmds.c:10912 #, c-format msgid "table \"%s\" has different type for column \"%s\"" msgstr "\"%s\" í…Œì´ë¸”ì˜ \"%s\" 칼럼 ìžë£Œí˜• 틀립니다" -#: commands/tablecmds.c:10795 +#: commands/tablecmds.c:10925 #, c-format msgid "table has extra column \"%s\"" msgstr "\"%s\" ì¹¼ëŸ¼ì€ í™•ìž¥í˜•ìž…ë‹ˆë‹¤" -#: commands/tablecmds.c:10847 +#: commands/tablecmds.c:10977 #, c-format msgid "\"%s\" is not a typed table" msgstr "\"%s\" í…Œì´ë¸”ì€ typed í…Œì´ë¸”ì´ ì•„ë‹™ë‹ˆë‹¤" -#: commands/tablecmds.c:11031 +#: commands/tablecmds.c:11161 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” ìœ ë‹ˆí¬ ì¸ë±ìŠ¤ê°€ 아니여서, 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" -#: commands/tablecmds.c:11037 +#: commands/tablecmds.c:11167 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" msgstr "\"%s\" non-immediate ì¸ë±ìŠ¤ëŠ” 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" -#: commands/tablecmds.c:11043 +#: commands/tablecmds.c:11173 #, c-format msgid "cannot use expression index \"%s\" as replica identity" msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” expression ì¸ë±ìŠ¤ì—¬ì„œ, 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" -#: commands/tablecmds.c:11049 +#: commands/tablecmds.c:11179 #, c-format msgid "cannot use partial index \"%s\" as replica identity" msgstr "\"%s\" ì¸ë±ìŠ¤ê°€ 부분ì¸ë±ìŠ¤ì—¬ì„œ, 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" -#: commands/tablecmds.c:11055 +#: commands/tablecmds.c:11185 #, c-format msgid "cannot use invalid index \"%s\" as replica identity" -msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” 사용할 수 없는 ì¸ë±ìŠ¤ì—¬ì„œ, 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" +msgstr "" +"\"%s\" ì¸ë±ìŠ¤ëŠ” 사용할 수 없는 ì¸ë±ìŠ¤ì—¬ì„œ, 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" -#: commands/tablecmds.c:11076 +#: commands/tablecmds.c:11206 #, c-format msgid "" "index \"%s\" cannot be used as replica identity because column %d is a " @@ -9128,58 +9184,60 @@ msgid "" msgstr "" "\"%s\" ì¸ë±ìŠ¤ëŠ” 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ, %d 번째 ì¹¼ëŸ¼ì´ ì‹œìŠ¤í…œ 칼럼임" -#: commands/tablecmds.c:11083 +#: commands/tablecmds.c:11213 #, c-format msgid "" "index \"%s\" cannot be used as replica identity because column \"%s\" is " "nullable" msgstr "" -"\"%s\" ì¸ë±ìŠ¤ëŠ” 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ, \"%s\" ì¹¼ëŸ¼ì´ null ê°’ 사용가능 ì†ì„±ìž„" +"\"%s\" ì¸ë±ìŠ¤ëŠ” 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ, \"%s\" ì¹¼ëŸ¼ì´ null ê°’ 사용가능 " +"ì†ì„±ìž„" -#: commands/tablecmds.c:11280 +#: commands/tablecmds.c:11416 #, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" msgstr "\"%s\" í…Œì´ë¸”ì€ ìž„ì‹œ í…Œì´ë¸”ì´ê¸°ì—, 통계 정보를 변경 í•  수 ì—†ìŒ" -#: commands/tablecmds.c:11339 +#: 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 ì†ì„±ìœ¼ë¡œ 바꿀 수 ì—†ìŒ" +"\"%s\" í…Œì´ë¸”ì´ \"%s\" unlogged í…Œì´ë¸”ì„ ì°¸ì¡°í•˜ê³  있어 logged ì†ì„±ìœ¼ë¡œ 바꿀 " +"수 ì—†ìŒ" -#: commands/tablecmds.c:11349 +#: 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 ì†ì„±ìœ¼ë¡œ 바꿀 수 ì—†ìŒ" - +"\"%s\" í…Œì´ë¸”ì´ \"%s\" logged í…Œì´ë¸”ì„ ì°¸ì¡°í•˜ê³  있어 unlogged ì†ì„±ìœ¼ë¡œ 바꿀 " +"수 ì—†ìŒ" -#: commands/tablecmds.c:11406 +#: commands/tablecmds.c:11542 #, c-format msgid "cannot move an owned sequence into another schema" msgstr "ì†Œìœ ëœ ì‹œí€€ìŠ¤ë¥¼ 다른 스키마로 ì´ë™í•  수 ì—†ìŒ" -#: commands/tablecmds.c:11511 +#: commands/tablecmds.c:11647 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" msgstr "\"%s\" 릴레ì´ì…˜ì´ \"%s\" ìŠ¤í‚¤ë§ˆì— ì´ë¯¸ 있습니다" -#: commands/tablecmds.c:12038 +#: commands/tablecmds.c:12174 #, c-format msgid "\"%s\" is not a composite type" msgstr "\"%s\" ê°ì²´ëŠ” 복합 ìžë£Œí˜•입니다" -#: commands/tablecmds.c:12068 +#: commands/tablecmds.c:12204 #, c-format msgid "" "\"%s\" is not a table, view, materialized view, sequence, or foreign table" -msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, ë·°, êµ¬ì²´í™”ëœ ë·°, 시퀀스, 외부 í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤" +msgstr "" +"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, ë·°, êµ¬ì²´í™”ëœ ë·°, 시퀀스, 외부 í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™" +"니다" #: commands/tablespace.c:162 commands/tablespace.c:179 #: commands/tablespace.c:190 commands/tablespace.c:198 @@ -9455,7 +9513,8 @@ msgstr "BEFORE STATEMENT 트리거는 ë¦¬í„´ê°’ì´ ìžˆìœ¼ë©´ 안ë©ë‹ˆë‹¤" msgid "" "tuple to be updated was already modified by an operation triggered by the " "current command" -msgstr "현재 명령으로 ì‹¤í–‰ëœ íŠ¸ë¦¬ê±° 작업으로 변경해야할 ìžë£Œê°€ ì´ë¯¸ 바뀌었습니다." +msgstr "" +"현재 명령으로 ì‹¤í–‰ëœ íŠ¸ë¦¬ê±° 작업으로 변경해야할 ìžë£Œê°€ ì´ë¯¸ 바뀌었습니다." #: commands/trigger.c:2727 executor/nodeModifyTable.c:680 #: executor/nodeModifyTable.c:973 @@ -9463,9 +9522,11 @@ msgstr "현재 명령으로 ì‹¤í–‰ëœ íŠ¸ë¦¬ê±° 작업으로 변경해야할 ìž msgid "" "Consider using an AFTER trigger instead of a BEFORE trigger to propagate " "changes to other rows." -msgstr "다른 로우를 변경하는 ì¼ì„ BEFORE 트리거 ëŒ€ì‹ ì— AFTER 트리거 ì‚¬ìš©ì„ ê³ ë ¤í•´ 보십시오" +msgstr "" +"다른 로우를 변경하는 ì¼ì„ BEFORE 트리거 ëŒ€ì‹ ì— AFTER 트리거 ì‚¬ìš©ì„ ê³ ë ¤í•´ ë³´" +"십시오" -#: commands/trigger.c:2741 executor/execMain.c:2377 +#: 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 @@ -9623,8 +9684,7 @@ msgstr "ìžë£Œí˜• 출력 함수를 지정하십시오" msgid "" "type modifier output function is useless without a type modifier input " "function" -msgstr "" -"í˜•ì‹ í•œì •ìž ìž…ë ¥ 함수가 없으면 í˜•ì‹ í•œì •ìž ì¶œë ¥ 함수는 ì˜ë¯¸ê°€ ì—†ìŒ" +msgstr "í˜•ì‹ í•œì •ìž ìž…ë ¥ 함수가 없으면 í˜•ì‹ í•œì •ìž ì¶œë ¥ 함수는 ì˜ë¯¸ê°€ ì—†ìŒ" #: commands/typecmds.c:453 commands/typecmds.c:470 #, c-format @@ -9744,7 +9804,9 @@ msgstr "range subtypeì€ %s 아니여야 함" #: commands/typecmds.c:1453 #, c-format msgid "range collation specified but subtype does not support collation" -msgstr "range í˜•ì— ì •ë ¬ ê·œì¹™ì„ ì§€ì •í–ˆì§€ë§Œ, ì†Œì† ìžë£Œí˜•ì´ ê·¸ ì •ë ¬ ê·œì¹™ì„ ì§€ì›í•˜ì§€ 않습니다" +msgstr "" +"range í˜•ì— ì •ë ¬ ê·œì¹™ì„ ì§€ì •í–ˆì§€ë§Œ, ì†Œì† ìžë£Œí˜•ì´ ê·¸ ì •ë ¬ ê·œì¹™ì„ ì§€ì›í•˜ì§€ 않습" +"니다" #: commands/typecmds.c:1687 #, c-format @@ -9777,8 +9839,8 @@ msgid "" "You must specify an operator class for the range type or define a default " "operator class for the subtype." msgstr "" -"subtypeì„ ìœ„í•œ 기본 ì—°ì‚°ìž í´ëž˜ìŠ¤ë‚˜ range ìžë£Œí˜•ì„ ìœ„í•œ í•˜ë‚˜ì˜ " -"ì—°ì‚°ìž í´ëž˜ìŠ¤ë¥¼ 지정해야 합니다" +"subtypeì„ ìœ„í•œ 기본 ì—°ì‚°ìž í´ëž˜ìŠ¤ë‚˜ range ìžë£Œí˜•ì„ ìœ„í•œ í•˜ë‚˜ì˜ ì—°ì‚°ìž í´ëž˜ìФ" +"를 지정해야 합니다" #: commands/typecmds.c:1968 #, c-format @@ -9899,7 +9961,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:13615 gram.y:13650 +#: 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\" 롤 ì´ë¦„ì€ ë‚´ë¶€ì ìœ¼ë¡œ 사용ë˜ê³  있습니다" @@ -10055,7 +10117,9 @@ 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 ì˜µì…˜ì„ í•¨ê»˜ 사용할 수 없습니다." +msgstr "" +"VACUUM 명령ì—서 DISABLE_PAGE_SKIPPING 옵션과 FULL ì˜µì…˜ì„ í•¨ê»˜ 사용할 수 없습" +"니다." # # search5 부분 #: commands/vacuum.c:535 @@ -10081,7 +10145,8 @@ msgstr "가장 ì˜¤ëž˜ëœ multixact ê°’ì´ ë„ˆë¬´ 옛날 것입니다." msgid "" "Close open transactions with multixacts soon to avoid wraparound problems." msgstr "" -"멀티 트랜잭션 ID 겹침 사고를 막기 위해 빨리 열린 멀티 íŠ¸ëžœìž­ì…˜ë“¤ì„ ë‹«ìœ¼ì‹­ì‹œì˜¤." +"멀티 트랜잭션 ID 겹침 사고를 막기 위해 빨리 열린 멀티 íŠ¸ëžœìž­ì…˜ë“¤ì„ ë‹«ìœ¼ì‹­ì‹œ" +"오." #: commands/vacuum.c:1146 #, c-format @@ -10108,8 +10173,7 @@ msgstr "\"%s\" 건너뜀 --- 슈í¼ìœ ì €ë§Œ 청소할 수 있ìŒ" #: commands/vacuum.c:1298 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" -msgstr "" -"\"%s\" 건너뜀 --- 슈í¼ìœ ì € ë˜ëŠ” ë°ì´í„°ë² ì´ìФ 소유주만 청소할 수 있ìŒ" +msgstr "\"%s\" 건너뜀 --- 슈í¼ìœ ì € ë˜ëŠ” ë°ì´í„°ë² ì´ìФ 소유주만 청소할 수 있ìŒ" #: commands/vacuum.c:1302 #, c-format @@ -10119,7 +10183,9 @@ msgstr "\"%s\" 건너뜀 --- ì´ í…Œì´ë¸”ì´ë‚˜ ë°ì´í„°ë² ì´ìŠ¤ì˜ ì†Œìœ ì£¼ #: commands/vacuum.c:1320 #, c-format msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" -msgstr "\"%s\" 건너뜀 --- í…Œì´ë¸”ì´ ì•„ë‹Œ 것 ë˜ëŠ” 특별 시스템 í…Œì´ë¸” ë“±ì€ ì²­ì†Œí•  수 ì—†ìŒ" +msgstr "" +"\"%s\" 건너뜀 --- í…Œì´ë¸”ì´ ì•„ë‹Œ 것 ë˜ëŠ” 특별 시스템 í…Œì´ë¸” ë“±ì€ ì²­ì†Œí•  수 ì—†" +"ìŒ" #: commands/vacuumlazy.c:366 #, c-format @@ -10130,15 +10196,13 @@ msgstr "\"%s.%s.%s\" í…Œì´ë¸” ìžë™ 청소: ì¸ë±ìФ íƒìƒ‰: %d\n" #, c-format msgid "" "pages: %u removed, %u remain, %u skipped due to pins, %u skipped frozen\n" -msgstr "" -"페ì´ì§€: %u ì‚­ì œë¨, %u 남ìŒ, %u í•€ë‹ìœ¼ë¡œ 건너뜀, %u ë™ê²°ë˜ì–´ 건너뜀\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" +msgstr "튜플: %.0f ì‚­ì œë¨, %.0f 남ìŒ, %.0f 삭제할 수 없는 ì£½ì€ íŠœí”Œ\n" #: commands/vacuumlazy.c:382 #, c-format @@ -10193,8 +10257,8 @@ msgid "" "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " "pages" msgstr "" -"\"%s\": 지울 수 있는 ìžë£Œ %.0fê°œ, 지울 수 없는 ìžë£Œ %.0f개를 %u/%uê°œ " -"페ì´ì§€ì—서 찾았ìŒ" +"\"%s\": 지울 수 있는 ìžë£Œ %.0fê°œ, 지울 수 없는 ìžë£Œ %.0f개를 %u/%uê°œ 페ì´ì§€ì—" +"서 찾았ìŒ" #: commands/vacuumlazy.c:1411 #, c-format @@ -10237,7 +10301,7 @@ msgstr "\"%s\": %u ì—서 %u 페ì´ì§€ë¡œ 정지했ìŒ" msgid "\"%s\": suspending truncate due to conflicting lock request" msgstr "\"%s\": 잠금 요청 ì¶©ëŒë¡œ ìžë£Œ 비우기 ìž‘ì—…ì„ ì§€ì—°í•©ë‹ˆë‹¤" -#: commands/variable.c:164 utils/misc/guc.c:9891 +#: commands/variable.c:164 utils/misc/guc.c:9899 #, c-format msgid "Unrecognized key word: \"%s\"." msgstr "알 수 없는 키워드: \"%s\"" @@ -10311,7 +10375,8 @@ msgstr "대신ì—, REPEATABLE READ ëª…ë ¹ì„ ì‚¬ìš©í•  수 있ìŒ." #, c-format msgid "" "SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction" -msgstr "하위 트랜잭션ì—서 SET TRANSACTION [NOT] DEFERRABLE êµ¬ë¬¸ì€ ì‚¬ìš©í•  수 ì—†ìŒ" +msgstr "" +"하위 트랜잭션ì—서 SET TRANSACTION [NOT] DEFERRABLE êµ¬ë¬¸ì€ ì‚¬ìš©í•  수 ì—†ìŒ" #: commands/variable.c:629 #, c-format @@ -10348,53 +10413,53 @@ msgstr "\"check_option\" ì˜µì…˜ê°’ì´ ìž˜ëª»ë¨" 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 는 columns 보다는 ì¢€ë” ë§Žì€ ì—´ ì´ë¦„ì„ ëª…ì‹œí•´ì•¼ 한다" -#: commands/view.c:507 +#: commands/view.c:536 #, c-format msgid "views cannot be unlogged because they do not have storage" -msgstr "뷰는 저장 ê³µê°„ì„ ì‚¬ìš©í•˜ì§€ 않기 ë•Œë¬¸ì— unlogged ì†ì„±ì„ 지정할 수 없습니다." - +msgstr "" +"뷰는 저장 ê³µê°„ì„ ì‚¬ìš©í•˜ì§€ 않기 ë•Œë¬¸ì— unlogged ì†ì„±ì„ 지정할 수 없습니다." -#: commands/view.c:521 +#: commands/view.c:550 #, c-format msgid "view \"%s\" will be a temporary view" msgstr "\"%s\" 뷰는 임시ì ì¸ 뷰로 만들어집니다" @@ -10435,7 +10500,8 @@ msgstr "\"%s\" 커서는 \"%s\" í…Œì´ë¸”ì˜ ë‹¨ìˆœ ì—…ë°ì´íЏ 가능한 스 #, c-format msgid "" "type of parameter %d (%s) does not match that when preparing the plan (%s)" -msgstr "%d번째 매개 ë³€ìˆ˜ì˜ ìžë£Œí˜•(%s)ì´ ë¯¸ë¦¬ ì¤€ë¹„ëœ ì‹¤í–‰ê³„íšì˜ ìžë£Œí˜•(%s)ê³¼ 다릅니다" +msgstr "" +"%d번째 매개 ë³€ìˆ˜ì˜ ìžë£Œí˜•(%s)ì´ ë¯¸ë¦¬ ì¤€ë¹„ëœ ì‹¤í–‰ê³„íšì˜ ìžë£Œí˜•(%s)ê³¼ 다릅니다" #: executor/execCurrent.c:243 executor/execQual.c:1190 #, c-format @@ -10447,8 +10513,9 @@ msgstr "%d번째 매개 변수 ê°’ì´ ì—†ìŠµë‹ˆë‹¤" msgid "" "ON CONFLICT does not support deferrable unique constraints/exclusion " "constraints as arbiters" -msgstr "지연 가능한 고유 제약조건ì´ë‚˜ 제외 제약 ì¡°ê±´ì€ ON CONFLICT íŒë³„ìžë¡œ " -"사용할 수 없습니다." +msgstr "" +"지연 가능한 고유 제약조건ì´ë‚˜ 제외 제약 ì¡°ê±´ì€ ON CONFLICT íŒë³„ìžë¡œ 사용할 " +"수 없습니다." #: executor/execIndexing.c:821 #, c-format @@ -10500,8 +10567,9 @@ msgstr "\"%s\" ë·°ì— ìžë£Œë¥¼ 입력할 수 없습니다" 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 ë£°ì„ ì‚¬ìš©í•˜ì„¸ìš”" +msgstr "" +"뷰를 통해 ìžë£Œë¥¼ 입력하려면, INSTEAD OF INSERT 트리거나 ON INSERT DO INSTEAD " +"ë£°ì„ ì‚¬ìš©í•˜ì„¸ìš”" #: executor/execMain.c:1059 rewrite/rewriteHandler.c:2656 #, c-format @@ -10514,8 +10582,8 @@ 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 ì†ì„±ìœ¼ë¡œ ë£°ì„ ë§Œë“¤ì–´ì„œ 사용해 보세요." +"ë·° ìžë£Œ 갱신 ê¸°ëŠ¥ì€ INSTEAD OF UPDATE 트리거를 사용하거나, ON UPDATE DO " +"INSTEAD ì†ì„±ìœ¼ë¡œ ë£°ì„ ë§Œë“¤ì–´ì„œ 사용해 보세요." #: executor/execMain.c:1067 rewrite/rewriteHandler.c:2664 #, c-format @@ -10528,8 +10596,8 @@ 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 ì†ì„±ìœ¼ë¡œ ë£°ì„ ë§Œë“¤ì–´ì„œ 사용해 보세요." +"ë·° ìžë£Œ ì‚­ì œ ê¸°ëŠ¥ì€ INSTEAD OF DELETE 트리거를 사용하거나, ON DELETE DO " +"INSTEAD ì†ì„±ìœ¼ë¡œ ë£°ì„ ë§Œë“¤ì–´ì„œ 사용해 보세요." #: executor/execMain.c:1080 #, c-format @@ -10591,7 +10659,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\"" @@ -10602,47 +10670,47 @@ msgstr "\"%s\" 외부 í…Œì´ë¸”ì—서 로우를 잠글 수 ì—†ìŒ" 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\" ì¹¼ëŸ¼ì˜ null ê°’ì´ 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\"" +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 " "table \"%s\"" msgstr "" -"새 ìžë£Œê°€ \"%s\" 로우 단위 보안 ì •ì±…(USING ì ˆ 사용)ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤, " -"해당 í…Œì´ë¸”: \"%s\"" +"새 ìžë£Œê°€ \"%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" @@ -10650,11 +10718,11 @@ msgid "" msgstr "" "새 ìžë£Œê°€ \"%s\" í…Œì´ë¸”ì˜ ë¡œìš° 단위 보안 ì •ì±…(USING ì ˆ 사용)ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤." -#: 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)를 초과했습니다" @@ -10664,12 +10732,12 @@ msgstr "지정한 ë°°ì—´ í¬ê¸°(%d)ê°€ 최대치(%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 ìžë£Œí˜•입니다." @@ -10717,8 +10785,7 @@ msgid "" "function returning setof record called in context that cannot accept type " "record" msgstr "" -"setof 레코드 반환 함수가 type 레코드를 허용하지 않는 컨í…스트ì—서 " -"호출ë¨" +"setof 레코드 반환 함수가 type 레코드를 허용하지 않는 컨í…스트ì—서 호출ë¨" #: executor/execQual.c:1638 executor/execQual.c:1654 executor/execQual.c:1664 #, c-format @@ -10762,63 +10829,63 @@ msgstr "IS DISTINCT FROM 구문ì—서는 set ì¸ìžë“¤ì„ ì§€ì›í•˜ì§€ 않습니 msgid "op ANY/ALL (array) does not support set arguments" msgstr "op ANY/ALL (array) ì—서는 set ì¸ìžë“¤ì„ ì§€ì›í•˜ì§€ 않습니다" -#: 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 " "element type %s." msgstr "" -"%s ìžë£Œí˜•ì˜ ìš”ì†Œë¡œ êµ¬ì„±ëœ ë°°ì—´ì€ %s ìžë£Œí˜•ì˜ ìš”ì†Œë¡œ êµ¬ì„±ëœ ARRAY êµ¬ë¬¸ì— " -"í¬í•¨ë  수 없습니다." +"%s ìžë£Œí˜•ì˜ ìš”ì†Œë¡œ êµ¬ì„±ëœ ë°°ì—´ì€ %s ìžë£Œí˜•ì˜ ìš”ì†Œë¡œ êµ¬ì„±ëœ ARRAY êµ¬ë¬¸ì— í¬í•¨" +"ë  ìˆ˜ 없습니다." -#: 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 "ë‹¤ì°¨ì› ë°°ì—´ì—는 ì¼ì¹˜í•˜ëŠ” ì°¨ì›ì´ í¬í•¨ëœ ë°°ì—´ ì‹ì´ 있어야 함" -#: executor/execQual.c:3792 +#: executor/execQual.c:3798 #, c-format msgid "NULLIF does not support set arguments" msgstr "NULLIF는 set ì¸ìžë“¤ì„ ì§€ì›í•˜ì§€ 않습니다" -#: 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 ìžë£Œí˜•ì—서 사용할 비êµí•¨ìˆ˜ë¥¼ ì°¾ì„ ìˆ˜ 없습니다." @@ -10838,92 +10905,100 @@ 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 "SQL 함수ì—서 %s ì§€ì›ë˜ì§€ 않ìŒ" #. 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 êµ¬ë¬¸ì€ ë¹„íœ˜ë°œì„± 함수(non-volatile function)ì—서 허용하지 않습니다" -#: 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 "" -"%s ìžë£Œí˜•ì„ ë°˜í™˜í•œë‹¤ê³  ì •ì˜í•œ 함수ì¸ë°, 실재 반환 ìžë£Œí˜•ì„ ê²°ì •í•  수 없습니다." +"%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." msgstr "" -"함수 ë‚´ìš©ì˜ ë§¨ 마지막 êµ¬ë¬¸ì€ SELECT ë˜ëŠ” INSERT/UPDATE/DELETE RETURNINGì´ì–´ì•¼ 합니" -"다." +"함수 ë‚´ìš©ì˜ ë§¨ 마지막 êµ¬ë¬¸ì€ 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 번째 칼럼ì—서 반환합니다." +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 "반환 ìžë£Œí˜•ì¸ %s ìžë£Œí˜•ì€ SQL 함수ì—서 ì§€ì›ë˜ì§€ 않ìŒ" -#: executor/nodeAgg.c:2983 +#: executor/nodeAgg.c:3038 #, c-format msgid "combine function for aggregate %u must be declared as STRICT" msgstr "%u OID 집계함수ì—서 쓸 ì¡°í•© 함수는 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 OID ì§‘ê³„í•¨ìˆ˜ì— í˜¸í™˜ 가능한 ìž…ë ¥ 형ì‹ê³¼ 변환 형ì‹ì´ 있어야 함" -#: 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 "집계 함수는 중첩ë˜ì–´ 호출 í•  수 ì—†ìŒ" @@ -10943,7 +11018,7 @@ msgstr "해시-ì¡°ì¸ ìž„ì‹œ 파ì¼ì„ ë˜ê°ì„ 수 ì—†ìŒ: %m" msgid "could not write to hash-join temporary file: %m" msgstr "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 "해시-ì¡°ì¸ ìž„ì‹œ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" @@ -11021,22 +11096,22 @@ msgstr "표현ì‹ì— ì‚¬ìš©ëœ ì„œë¸Œì¿¼ë¦¬ 결과가 하나 ì´ìƒì˜ í–‰ì„ msgid "moving-aggregate transition function must not return null" msgstr "moving-aggregate transition 함수는 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 "프래임 ë 위치값으로 ìŒìˆ˜ ê°’ì„ ì‚¬ìš©í•  수 없습니다." @@ -11072,7 +11147,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여야 합니다." @@ -11187,8 +11262,8 @@ msgstr "ì—°ê²°ì— ìœ íš¨í•œ í´ë¼ì´ì–¸íЏ ì¸ì¦ì„œê°€ 필요함" msgid "" "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" msgstr "" -"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", %s ì—°ê²°ì´ ë³µì œìš© 연결로는 pg_hba.conf íŒŒì¼ " -"ì„¤ì •ì— ë”°ë¼ ê±°ë¶€ë©ë‹ˆë‹¤" +"호스트 \"%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" @@ -11202,8 +11277,8 @@ msgstr "SSL ë™ìž‘" #, c-format msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" msgstr "" -"호스트 \"%s\", ì‚¬ìš©ìž \"%s\" ì—°ê²°ì´ ë³µì œìš© 연결로는 pg_hba.conf íŒŒì¼ " -"ì„¤ì •ì— ë”°ë¼ ê±°ë¶€ë©ë‹ˆë‹¤" +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\" ì—°ê²°ì´ ë³µì œìš© 연결로는 pg_hba.conf íŒŒì¼ ì„¤ì •ì— " +"ë”°ë¼ ê±°ë¶€ë©ë‹ˆë‹¤" #: libpq/auth.c:409 #, c-format @@ -11211,31 +11286,34 @@ msgid "" "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s" "\", %s" msgstr "" -"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", ë°ì´í„°ë² ì´ìФ \"%s\", %s ì—°ê²°ì´ pg_hba.conf íŒŒì¼ " -"ì„¤ì •ì— ë”°ë¼ ê±°ë¶€ë©ë‹ˆë‹¤" +"호스트 \"%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 íŒŒì¼ " -"ì„¤ì •ì— ë”°ë¼ ê±°ë¶€ë©ë‹ˆë‹¤" +"호스트 \"%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\" ì´ë¦„으로 확ì¸ë¨, 호스트 ì´ë¦„ í™•ì¸ ê¸°ëŠ¥ìœ¼ë¡œ ë§žìŒ" +msgstr "" +"í´ë¼ì´ì–¸íЏ IP 주소가 \"%s\" ì´ë¦„으로 확ì¸ë¨, 호스트 ì´ë¦„ í™•ì¸ ê¸°ëŠ¥ìœ¼ë¡œ ë§žìŒ" #: libpq/auth.c:448 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup not checked." -msgstr "í´ë¼ì´ì–¸íЏ IP 주소가 \"%s\" ì´ë¦„으로 확ì¸ë¨, 호스트 ì´ë¦„ í™•ì¸ ê¸°ëŠ¥ 사용안함" +msgstr "" +"í´ë¼ì´ì–¸íЏ IP 주소가 \"%s\" ì´ë¦„으로 확ì¸ë¨, 호스트 ì´ë¦„ í™•ì¸ ê¸°ëŠ¥ 사용안함" #: libpq/auth.c:451 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup does not match." -msgstr "í´ë¼ì´ì–¸íЏ IP 주소가 \"%s\" ì´ë¦„으로 확ì¸ë¨, 호스트 ì´ë¦„ í™•ì¸ ê¸°ëŠ¥ìœ¼ë¡œ 틀림" +msgstr "" +"í´ë¼ì´ì–¸íЏ IP 주소가 \"%s\" ì´ë¦„으로 확ì¸ë¨, 호스트 ì´ë¦„ í™•ì¸ ê¸°ëŠ¥ìœ¼ë¡œ 틀림" #: libpq/auth.c:454 #, c-format @@ -11253,16 +11331,16 @@ msgid "" "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s" "\", %s" msgstr "" -"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", %s ì—°ê²°ì´ ë³µì œìš© 연결로 pg_hba.conf 파ì¼ì— " -"설정ë˜ì–´ 있지 않습니다" +"호스트 \"%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 파ì¼ì— " -"설정ë˜ì–´ 있지 않습니다" +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\" ì—°ê²°ì´ ë³µì œìš© 연결로 pg_hba.conf 파ì¼ì— 설정ë˜" +"ì–´ 있지 않습니다" #: libpq/auth.c:485 #, c-format @@ -11275,8 +11353,8 @@ msgstr "" #, c-format msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" msgstr "" -"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", ë°ì´í„°ë² ì´ìФ \"%s\" ì—°ê²°ì— ëŒ€í•œ ì„¤ì •ì´ " -"pg_hba.conf 파ì¼ì— 없습니다." +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", ë°ì´í„°ë² ì´ìФ \"%s\" ì—°ê²°ì— ëŒ€í•œ ì„¤ì •ì´ pg_hba." +"conf 파ì¼ì— 없습니다." #: libpq/auth.c:536 libpq/hba.c:1178 #, c-format @@ -11490,7 +11568,9 @@ msgstr "LDAP ì¸ì¦ì„ 위한 ì‚¬ìš©ìž ì´ë¦„ì— ì‚¬ìš©í•  수 없는 문ìžê°€ msgid "" "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " "%s" -msgstr "\"%s\" ldapbinddn (해당 서버: \"%s\") ì„¤ì •ì— ëŒ€í•œ LDAP ë°”ì¸ë“œ 초기화를 í•  수 ì—†ìŒ: %s" +msgstr "" +"\"%s\" ldapbinddn (해당 서버: \"%s\") ì„¤ì •ì— ëŒ€í•œ LDAP ë°”ì¸ë“œ 초기화를 í•  수 " +"ì—†ìŒ: %s" #: libpq/auth.c:2228 #, c-format @@ -11541,8 +11621,8 @@ msgid "" "certificate authentication failed for user \"%s\": client certificate " "contains no user name" msgstr "" -"\"%s\" 사용ìžì— 대한 ì¸ì¦ì„œ ë¡œê·¸ì¸ ì‹¤íŒ¨: í´ë¼ì´ì–¸íЏ ì¸ì¦ì„œì— 사용" -"ìž ì´ë¦„ì´ ì—†ìŒ" +"\"%s\" 사용ìžì— 대한 ì¸ì¦ì„œ ë¡œê·¸ì¸ ì‹¤íŒ¨: í´ë¼ì´ì–¸íЏ ì¸ì¦ì„œì— ì‚¬ìš©ìž ì´ë¦„ì´ ì—†" +"ìŒ" #: libpq/auth.c:2468 #, c-format @@ -11680,8 +11760,8 @@ msgstr "서버 측 lo_import() í˜¸ì¶œì„ í•˜ë ¤ë©´, 슈í¼ìœ ì €ì—¬ì•¼ 합니다 #, c-format msgid "Anyone can use the client-side lo_import() provided by libpq." msgstr "" -"libpq ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì´ìš©í•œ í´ë¼ì´ì–¸íЏ 측 lo_import() í˜¸ì¶œì€ " -"아무나 í•  수 있습니다." +"libpq ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì´ìš©í•œ í´ë¼ì´ì–¸íЏ 측 lo_import() í˜¸ì¶œì€ ì•„ë¬´ë‚˜ í•  수 있습" +"니다." #: libpq/be-fsstubs.c:469 #, c-format @@ -11746,7 +11826,8 @@ 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 여야 합니다." +msgstr "" +"\"%s\" ê°œì¸ í‚¤ 파ì¼ì˜ 소유주는 ë°ì´í„°ë² ì´ìФ 사용ìžì´ê±°ë‚˜ root 여야 합니다." #: libpq/be-secure-openssl.c:249 #, c-format @@ -11759,9 +11840,9 @@ 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) 권한으로 지정하세요" +"파ì¼ì˜ 소유주가 ë°ì´í„°ë² ì´ìФ 서버 ìš´ì˜ ê³„ì •ê³¼ 같다면, ì ‘ê·¼ ê¶Œí•œì„ u=rw " +"(0600) ë˜ëŠ” ë” ìž‘ê²Œ 설정하고, rootê°€ 소유주ë¼ë©´ u=rw,g=r (0640) 권한으로 지정" +"하세요" #: libpq/be-secure-openssl.c:258 #, c-format @@ -11973,8 +12054,8 @@ msgstr "ì´ ì„œë²„ëŠ” hostssl ì ‘ì† ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않습니다." #, c-format msgid "Compile with --with-openssl to use SSL connections." msgstr "" -"SSL ì—°ê²°ì„ ì‚¬ìš©í•˜ê¸° 위해 --enable-ssl ì˜µì…˜ì„ ì‚¬ìš©í•´ì„œ " -"서버를 다시 ì»´íŒŒì¼ í•˜ì„¸ìš”" +"SSL ì—°ê²°ì„ ì‚¬ìš©í•˜ê¸° 위해 --enable-ssl ì˜µì…˜ì„ ì‚¬ìš©í•´ì„œ 서버를 다시 ì»´íŒŒì¼ í•˜ì„¸" +"ìš”" #: libpq/hba.c:910 #, c-format @@ -12098,8 +12179,8 @@ msgid "" "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or " "ldapurl together with ldapprefix" msgstr "" -"ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, ldapurl " -"ì˜µì…˜ì€ ldapprefix 옵션과 함께 사용할 수 ì—†ìŒ" +"ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, ldapurl ì˜µì…˜ì€ " +"ldapprefix 옵션과 함께 사용할 수 ì—†ìŒ" #: libpq/hba.c:1371 #, c-format @@ -12107,8 +12188,8 @@ msgid "" "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" "\", or \"ldapsuffix\" to be set" msgstr "" -"\"ldap\" ì¸ì¦ ë°©ë²•ì˜ ê²½ìš° \"ldapbasedn\", \"ldapprefix\", \"ldapsuffix\"" -"ì˜µì…˜ì´ ìžˆì–´ì•¼ 함" +"\"ldap\" ì¸ì¦ ë°©ë²•ì˜ ê²½ìš° \"ldapbasedn\", \"ldapprefix\", \"ldapsuffix\"옵션" +"ì´ ìžˆì–´ì•¼ 함" #: libpq/hba.c:1414 msgid "ident, peer, gssapi, sspi, and cert" @@ -12125,8 +12206,7 @@ msgid "" "client certificates can only be checked if a root certificate store is " "available" msgstr "" -"루트 ì¸ì¦ì„œ 저장소가 사용 가능한 경우ì—ë§Œ í´ë¼ì´ì–¸íЏ ì¸ì¦ì„œë¥¼ 검사" -"í•  수 있ìŒ" +"루트 ì¸ì¦ì„œ 저장소가 사용 가능한 경우ì—ë§Œ í´ë¼ì´ì–¸íЏ ì¸ì¦ì„œë¥¼ 검사할 수 있ìŒ" #: libpq/hba.c:1452 #, c-format @@ -12176,7 +12256,7 @@ msgstr "RADIUS í¬íЏ 번호가 잘못ë¨: \"%s\"" msgid "unrecognized authentication option name: \"%s\"" msgstr "알 수 없는 ì¸ì¦ 옵션 ì´ë¦„: \"%s\"" -#: libpq/hba.c:1806 guc-file.l:593 +#: libpq/hba.c:1806 guc-file.l:594 #, c-format msgid "could not open configuration file \"%s\": %m" msgstr "\"%s\" 설정 íŒŒì¼ ì„ ì—´ìˆ˜ 없습니다: %m" @@ -12201,8 +12281,7 @@ msgstr "\"%s\"ì— ëŒ€í•œ ì •ê·œì‹ ì¼ì¹˜ 실패: %s" msgid "" "regular expression \"%s\" has no subexpressions as requested by " "backreference in \"%s\"" -msgstr "" -"\"%s\" ì •ê·œì‹ì—는 \"%s\"ì˜ backreferenceì—서 ìš”ì²­ëœ í•˜ìœ„ ì‹ì´ ì—†ìŒ" +msgstr "\"%s\" ì •ê·œì‹ì—는 \"%s\"ì˜ backreferenceì—서 ìš”ì²­ëœ í•˜ìœ„ ì‹ì´ ì—†ìŒ" #: libpq/hba.c:2127 #, c-format @@ -12212,7 +12291,8 @@ 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\" 사용ìžë¡œ ì¸ì¦í•  ì„¤ì •ì´ ì—†ìŒ" +msgstr "" +"\"%s\" 사용ìžë§µ 파ì¼ì— \"%s\" 사용ìžë¥¼ \"%s\" 사용ìžë¡œ ì¸ì¦í•  ì„¤ì •ì´ ì—†ìŒ" #: libpq/hba.c:2182 #, c-format @@ -12483,8 +12563,8 @@ msgstr " -N MAX-CONNECT 최대 ë™ì‹œ ì—°ê²° 개수\n" msgid "" " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" msgstr "" -" -o OPTIONS 개별 서버 프로세스를 \"OPTIONS\" 옵션으로 실행 " -"(옛기능)\n" +" -o OPTIONS 개별 서버 프로세스를 \"OPTIONS\" 옵션으로 실행 (옛기" +"능)\n" #: main/main.c:346 #, c-format @@ -12539,7 +12619,8 @@ msgstr " -f s|i|n|m|h 쿼리최ì í™”ê¸°ì˜ ê¸°ëŠ¥ì„ ì œí•œ 함\n" #, c-format msgid "" " -n do not reinitialize shared memory after abnormal exit\n" -msgstr " -n 비정ìƒì  종료 ë’¤ì— ê³µìœ  메모리를 초기화 하지 않ìŒ\n" +msgstr "" +" -n 비정ìƒì  종료 ë’¤ì— ê³µìœ  메모리를 초기화 하지 않ìŒ\n" #: main/main.c:357 #, c-format @@ -12567,7 +12648,8 @@ msgstr "" #: main/main.c:361 #, c-format msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" -msgstr " -W NUM 디버그 ìž‘ì—…ì„ ìœ„í•´ 지정한 숫ìžì˜ ì´ˆë§Œí¼ ê¸°ë‹¤ë¦°ë‹¤\n" +msgstr "" +" -W NUM 디버그 ìž‘ì—…ì„ ìœ„í•´ 지정한 숫ìžì˜ ì´ˆë§Œí¼ ê¸°ë‹¤ë¦°ë‹¤\n" #: main/main.c:363 #, c-format @@ -12582,8 +12664,7 @@ msgstr "" #, c-format msgid "" " --single selects single-user mode (must be first argument)\n" -msgstr "" -" --single ë‹¨ì¼ ì‚¬ìš©ìž ëª¨ë“œ ì„ íƒ (ì¸ìžì˜ 첫번째로 와야함)\n" +msgstr " --single ë‹¨ì¼ ì‚¬ìš©ìž ëª¨ë“œ ì„ íƒ (ì¸ìžì˜ 첫번째로 와야함)\n" #: main/main.c:365 #, c-format @@ -12611,7 +12692,9 @@ msgstr "" #: 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" +msgstr "" +" -r FILENAME stdout, stderr 쪽으로 보내는 ë‚´ìš©ì„ FILENAME 파ì¼ë¡œ 저장" +"함\n" #: main/main.c:371 #, c-format @@ -12626,16 +12709,14 @@ msgstr "" #, c-format msgid "" " --boot selects bootstrapping mode (must be first argument)\n" -msgstr "" -" --boot 부트스트랩 모드로 실행 (첫번째 ì¸ìžë¡œ 와야함)\n" +msgstr " --boot 부트스트랩 모드로 실행 (첫번째 ì¸ìžë¡œ 와야함)\n" #: main/main.c:373 #, c-format msgid "" " DBNAME database name (mandatory argument in bootstrapping " "mode)\n" -msgstr "" -" DBNAME ë°ì´í„°ë² ì´ìФ ì´ë¦„ (부트스트랩 모드ì—서 필수)\n" +msgstr " DBNAME ë°ì´í„°ë² ì´ìФ ì´ë¦„ (부트스트랩 모드ì—서 필수)\n" #: main/main.c:375 #, c-format @@ -12711,14 +12792,17 @@ 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 êµ¬ë¬¸ì„ ì§€ì›í•˜ì§€ 않ìŒ" +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 ì˜µì…˜ì€ í•˜ë‚˜ ì´ìƒì˜ 릴레ì´ì…˜ì„ 사용하는 ë·°ì—서는 사용할 수 ì—†ìŒ" +msgstr "" +"WHERE CURRENT OF ì˜µì…˜ì€ í•˜ë‚˜ ì´ìƒì˜ 릴레ì´ì…˜ì„ 사용하는 ë·°ì—서는 사용할 수 ì—†" +"ìŒ" #: optimizer/path/allpaths.c:2663 #, c-format @@ -12732,60 +12816,58 @@ msgid "" "FULL JOIN is only supported with merge-joinable or hash-joinable join " "conditions" msgstr "" -"FULL JOIN êµ¬ë¬¸ì€ ë¨¸ì§€ ì¡°ì¸ì´ë‚˜, 해시 ì¡°ì¸ì´ 가능한 ìƒí™©ì—서만 " -"사용할 수 있습니다" +"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 ê°’ì´ ì˜¬ 수 있는 ìª½ì— ëŒ€í•´ì„œëŠ” ì ìš©í•  " -"수 없습니다" +"%s êµ¬ë¬¸ì€ outer ì¡°ì¸ìœ¼ë¡œ 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/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 "" -"해싱만 ì§€ì›í•˜ëŠ” ìžë£Œí˜•ë„ ìžˆê³ , 정렬만 ì§€ì›í•˜ëŠ” ìžë£Œí˜•ë„ " -"있습니다." +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 "ì°½ 순서 지정 ì—´ì€ ì •ë ¬ 가능한 ë°ì´í„° 형ì‹ì´ì–´ì•¼ 합니다." @@ -12811,32 +12893,32 @@ msgstr "모든 ì—´ ë°ì´í„° 형ì‹ì€ 해시 가능해야 합니다." 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 "" -#: 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 " @@ -12844,7 +12926,7 @@ msgid "" msgstr "" "ON CONFLICT ì ˆì„ ì‚¬ìš©í•˜ëŠ” 경우, unique 나 exclude 제약 ì¡°ê±´ì´ ìžˆì–´ì•¼ 함" -#: 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 목ë¡ì€ ëª¨ë‘ ê°™ì€ ê¸¸ì´ì—¬ì•¼ 함" @@ -12867,184 +12949,186 @@ msgid "" "columns expected by the INSERT. Did you accidentally use extra parentheses?" msgstr "" -#: 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는 INSERT ë‚´ì˜ VALUES 목ë¡ì—ë§Œ í‘œì‹œë  ìˆ˜ 있ìŒ" #. 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 " "clause." -msgstr "" -"모든 SELECTì— ì‹/함수를 추가하거나 UNIONì„ FROM 절로 ì´ë™í•˜ì‹­ì‹œì˜¤." +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 는 UNION/INTERSECT/EXCEPT ì˜ ì²«ë²ˆì§¸ SELECT ì—ë§Œ 허용ëœë‹¤" -#: 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 "" -"UNION/INTERSECT/EXCEPT 멤버 문ì—서 ê°™ì€ ì¿¼ë¦¬ ìˆ˜ì¤€ì˜ ë‹¤ë¥¸ 관계를 ì°¸" -"ì¡°í•  수 ì—†ìŒ" +"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 query 는 ê°™ì€ ìˆ˜ì˜ columns 를 가져야 한다." -#: 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 ì ˆ 안ì—는 ìžë£Œ 변경 êµ¬ë¬¸ì´ ì—†ì–´ì•¼ 합니다" +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 ì ˆ 안ì—는 ìžë£Œ 변경 êµ¬ë¬¸ì´ ì—†ì–´ì•¼ 합니다" +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 ì ˆì—는 unqualified 릴레ì´ì…˜ ì´ë¦„ì„ ì§€ì •í•´ì•¼ 합니다." #. 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 ì ˆ ë‚´ì— ì—†ìŠµë‹ˆë‹¤" @@ -13057,7 +13141,8 @@ msgstr "%s ìžë£Œí˜•ì—서 사용할 순서 정하는 ì—°ì‚°ìžë¥¼ ì°¾ì„ ìˆ˜ #: parser/parse_agg.c:225 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." -msgstr "DISTINCT와 함께 작업하는 집계 ìž‘ì—…ì€ ê·¸ ìž…ë ¥ ìžë£Œê°€ ì •ë ¬ë  ìˆ˜ 있어야 합니다" +msgstr "" +"DISTINCT와 함께 작업하는 집계 ìž‘ì—…ì€ ê·¸ ìž…ë ¥ ìžë£Œê°€ ì •ë ¬ë  ìˆ˜ 있어야 합니다" #: parser/parse_agg.c:260 #, c-format @@ -13075,8 +13160,7 @@ msgstr "JOIN 조건문ì—서는 그룹핑 ì—°ì‚°ì´ í—ˆìš©ë˜ì§€ 않습니다" #: parser/parse_agg.c:377 msgid "" "aggregate functions are not allowed in FROM clause of their own query level" -msgstr "" -"집계 함수는 ìžì‹ ì˜ 쿼리 ìˆ˜ì¤€ì˜ FROM ì ˆì—서는 사용할 수 없습니다." +msgstr "집계 함수는 ìžì‹ ì˜ 쿼리 ìˆ˜ì¤€ì˜ FROM ì ˆì—서는 사용할 수 없습니다." #: parser/parse_agg.c:379 msgid "" @@ -13439,8 +13523,8 @@ msgid "" "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument " "list" msgstr "" -"DISTINCT, ORDER BY 표현ì‹ì„ 집계 함수와 쓸 때는, 반드시 select list ì— ë‚˜íƒ€ë‚˜ì•¼ë§Œ í•©" -"니다" +"DISTINCT, ORDER BY 표현ì‹ì„ 집계 함수와 쓸 때는, 반드시 select list ì— ë‚˜íƒ€ë‚˜" +"야만 합니다" #: parser/parse_clause.c:2563 #, c-format @@ -13494,7 +13578,9 @@ 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 ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 없습니다. ì´ í…Œì´ë¸”ì€ ì¹´íƒˆë¡œê·¸ í…Œì´ë¸”로 사용ë©ë‹ˆë‹¤." +msgstr "" +"\"%s\" í…Œì´ë¸”ì—는 ON CONFLICT ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 없습니다. ì´ í…Œì´ë¸”ì€ ì¹´íƒˆë¡œ" +"ê·¸ í…Œì´ë¸”로 사용ë©ë‹ˆë‹¤." #: parser/parse_clause.c:3012 #, c-format @@ -13510,7 +13596,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 ìžë£Œí˜•으로 형변환할 수 없습니다." @@ -13629,7 +13715,8 @@ msgstr "ìžë£Œí˜• %s ì— ëŒ€í•´ì„œëŠ” ë°°ì—´ ìžë£Œí˜•ì„ ì‚¬ìš©í•  수 없습 #: parser/parse_collate.c:986 #, c-format msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" -msgstr "암묵ì ìœ¼ë¡œ ì„ íƒëœ \"%s\" ì •ë ¬ 규칙와 \"%s\" ì •ë ¬ ê·œì¹™ì´ ë§¤ì¹­ë˜ì§€ 않습니다" +msgstr "" +"암묵ì ìœ¼ë¡œ ì„ íƒëœ \"%s\" ì •ë ¬ 규칙와 \"%s\" ì •ë ¬ ê·œì¹™ì´ ë§¤ì¹­ë˜ì§€ 않습니다" #: parser/parse_collate.c:231 parser/parse_collate.c:478 #: parser/parse_collate.c:989 @@ -13642,15 +13729,15 @@ msgstr "한 쪽 ë˜ëŠ” 서로 COLLATE ì ˆì„ ì´ìš©í•´ ì •ë ¬ ê·œì¹™ì„ ì§€ì • #: parser/parse_collate.c:834 #, c-format msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" -msgstr "명시ì ìœ¼ë¡œ 지정한 \"%s\" 정렬규칙와 \"%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\" ì¿¼ë¦¬ì— ëŒ€í•œ 재귀 참조가 비재귀 구문 안ì—는 없어야 함" +msgstr "\"%s\" ì¿¼ë¦¬ì— ëŒ€í•œ 재귀 참조가 비재귀 구문 안ì—는 없어야 함" #: parser/parse_cte.c:44 #, c-format @@ -13690,8 +13777,8 @@ msgid "" "recursive query \"%s\" column %d has type %s in non-recursive term but type " "%s overall" msgstr "" -"\"%s\" 재귀 ì¿¼ë¦¬ì˜ %d 번째 ì¹¼ëŸ¼ì€ ë¹„ìž¬ê·€ ì¡°ê±´ì— %s ìžë£Œí˜•ì„ í¬í•¨í•˜ëŠ”ë° ì „ì²´ì ìœ¼ë¡œ" -"는 %s ìžë£Œí˜•ìž„" +"\"%s\" 재귀 ì¿¼ë¦¬ì˜ %d 번째 ì¹¼ëŸ¼ì€ ë¹„ìž¬ê·€ ì¡°ê±´ì— %s ìžë£Œí˜•ì„ í¬í•¨í•˜ëŠ”ë° ì „ì²´ì " +"으로는 %s ìžë£Œí˜•ìž„" #: parser/parse_cte.c:319 #, c-format @@ -13704,8 +13791,8 @@ msgid "" "recursive query \"%s\" column %d has collation \"%s\" in non-recursive term " "but collation \"%s\" overall" msgstr "" -"\"%s\" 재귀 ì¿¼ë¦¬ì˜ %d 번째 ì¹¼ëŸ¼ì€ ë¹„ìž¬ê·€ ì¡°ê±´ì— %s ìžë£Œí˜•ì„ í¬í•¨í•˜ëŠ”ë° ì „ì²´ì ìœ¼ë¡œ" -"는 %s ìžë£Œí˜•ìž„" +"\"%s\" 재귀 ì¿¼ë¦¬ì˜ %d 번째 ì¹¼ëŸ¼ì€ ë¹„ìž¬ê·€ ì¡°ê±´ì— %s ìžë£Œí˜•ì„ í¬í•¨í•˜ëŠ”ë° ì „ì²´ì " +"으로는 %s ìžë£Œí˜•ìž„" #: parser/parse_cte.c:328 #, c-format @@ -13715,7 +13802,8 @@ 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ê°œì˜ ì¹¼ëŸ¼ì´ ì§€ì •ë¨" +msgstr "" +"\"%s\" WITH 쿼리ì—는 %dê°œì˜ ì¹¼ëŸ¼ì„ ì‚¬ìš©í•  수 ìžˆëŠ”ë° %dê°œì˜ ì¹¼ëŸ¼ì´ ì§€ì •ë¨" #: parser/parse_cte.c:599 #, c-format @@ -13732,8 +13820,7 @@ msgstr "\"%s\" 재귀 ì¿¼ë¦¬ì— ìžë£Œ 변경 êµ¬ë¬¸ì´ í¬í•¨ë  수 없습니 msgid "" "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " "recursive-term" -msgstr "" -"\"%s\" 재귀 ì¿¼ë¦¬ì— ë¹„ìž¬ê·€ ì¡°ê±´ í˜•íƒœì˜ UNION [ALL] 재귀 ì¡°ê±´ì´ ì—†ìŒ" +msgstr "\"%s\" 재귀 ì¿¼ë¦¬ì— ë¹„ìž¬ê·€ ì¡°ê±´ í˜•íƒœì˜ UNION [ALL] 재귀 ì¡°ê±´ì´ ì—†ìŒ" #: parser/parse_cte.c:703 #, c-format @@ -13760,8 +13847,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 칼럼 ì—†ìŒ" @@ -13782,13 +13869,13 @@ 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: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\" ê°€ 모호합니다." @@ -14010,7 +14097,9 @@ 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 ì ˆì„ ì‚¬ìš©í•  수 없습니다" +msgstr "" +"%s 함수는 순사가 있는 세트 집계함수가 아니여서 WITHIN GROUP ì ˆì„ ì‚¬ìš©í•  수 ì—†" +"습니다" #: parser/parse_func.c:468 #, c-format @@ -14033,8 +14122,8 @@ msgid "" "Could not choose a best candidate function. You might need to add explicit " "type casts." msgstr "" -"ì œì¼ ì ë‹¹í•œ 함수를 ì„ íƒí•  수 없습니다. ëª…ì‹œì  í˜•ë³€í™˜ìžë¥¼ 추가해야 " -"í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤." +"ì œì¼ ì ë‹¹í•œ 함수를 ì„ íƒí•  수 없습니다. ëª…ì‹œì  í˜•ë³€í™˜ìžë¥¼ 추가해야 í•  ìˆ˜ë„ ìžˆ" +"습니다." #: parser/parse_func.c:510 #, c-format @@ -14043,9 +14132,9 @@ msgid "" "misplaced ORDER BY; ORDER BY must appear after all regular arguments of the " "aggregate." msgstr "" -"ì§€ì •ëœ ì´ë¦„ ë° ì¸ìž ìžë£Œí˜•ê³¼ ì¼ì¹˜í•˜ëŠ” 집계 함수가 없습니다. ORDER BY ì ˆì„ " -"바른 ìœ„ì¹˜ì— ì“°ì§€ ì•Šì€ ê²ƒ 같습니다. ORDER BY ì ˆì€ ëª¨ë“  집계용 ì¸ìžë“¤ 맨 ë’¤ì— " -"있어야 합니다." +"ì§€ì •ëœ ì´ë¦„ ë° ì¸ìž ìžë£Œí˜•ê³¼ ì¼ì¹˜í•˜ëŠ” 집계 함수가 없습니다. ORDER BY ì ˆì„ ë°”" +"른 ìœ„ì¹˜ì— ì“°ì§€ ì•Šì€ ê²ƒ 같습니다. ORDER BY ì ˆì€ ëª¨ë“  집계용 ì¸ìžë“¤ 맨 ë’¤ì— ìžˆ" +"어야 합니다." #: parser/parse_func.c:521 #, c-format @@ -14053,8 +14142,8 @@ 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 @@ -14145,9 +14234,9 @@ msgstr "" "명시ì ìœ¼ë¡œ 순차연산ìž(ordering operator) 를 사용하ë˜ì§€, ë˜ëŠ” 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: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" @@ -14170,8 +14259,8 @@ msgid "" "Could not choose a best candidate operator. You might need to add explicit " "type casts." msgstr "" -"가장 ì ë‹¹í•œ ì—°ì‚°ìžë¥¼ ì„ íƒí•  수 없습니다. ëª…ì‹œì  í˜•ë³€í™˜ìžë¥¼ 추가해" -"야 í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤." +"가장 ì ë‹¹í•œ ì—°ì‚°ìžë¥¼ ì„ íƒí•  수 없습니다. ëª…ì‹œì  í˜•ë³€í™˜ìžë¥¼ 추가해야 í•  ìˆ˜ë„ " +"있습니다." #: parser/parse_oper.c:724 #, c-format @@ -14179,8 +14268,8 @@ 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 @@ -14207,69 +14296,66 @@ msgstr "op ANY/ALL (array) 는 set ì„ return 하지 않는 ì—°ì‚°ìžê°€ 요구 msgid "inconsistent types deduced for parameter $%d" msgstr "inconsistent types deduced for parameter $%d" -#: parser/parse_relation.c:174 +#: parser/parse_relation.c:175 #, c-format msgid "table reference \"%s\" is ambiguous" msgstr "í…Œì´ë¸” 참조 \"%s\" ê°€ 명확하지 않습니다 (ambiguous)." -#: parser/parse_relation.c:218 +#: parser/parse_relation.c:219 #, c-format msgid "table reference %u is ambiguous" msgstr "í…Œì´ë¸” 참조 %u ê°€ 명확하지 않습니다 (ambiguous)." -#: 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 "\"%s\" í…Œì´ë¸”ì„ ì‚¬ìš©í•˜ëŠ” FROM ì ˆì— ëŒ€í•œ 참조가 잘못 ë˜ì—ˆìŠµë‹ˆë‹¤." -#: 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 "" -"\"%s\" í…Œì´ë¸”ì— ëŒ€í•œ í•­ëª©ì´ ìžˆì§€ë§Œ ì´ ì¿¼ë¦¬ 부분ì—서 참조할 수 없습" -"니다." +"\"%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 "" -#: 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 " "part of the query." -msgstr "" -"\"%s\"(ì´)ë¼ëŠ” WITH í•­ëª©ì´ ìžˆì§€ë§Œ ì´ ì¿¼ë¦¬ 부분ì—서 참조할 수 없습니" -"다." +msgstr "\"%s\"(ì´)ë¼ëŠ” WITH í•­ëª©ì´ ìžˆì§€ë§Œ ì´ ì¿¼ë¦¬ 부분ì—서 참조할 수 없습니다." -#: 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 "" -"WITH RECURSIVE를 사용하거나 WITH í•­ëª©ì˜ ìˆœì„œë¥¼ 변경하여 ì •ë°©í–¥ 참조를 ì œ" -"거하십시오." +"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\"" @@ -14277,91 +14363,91 @@ msgstr "" "ì—´ ì •ì˜ ë¦¬ìŠ¤íŠ¸ (column definition list) 는 오로지 \"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 "" "ì—´ ì •ì˜ ë¦¬ìŠ¤íŠ¸(column definition list)는 \"record\" 를 리턴하는 함수를 í•„ìš”" "로 합니다" -#: parser/parse_relation.c:1553 +#: 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: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 "" -#: 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\" alias를 참조해야 í•  것 같습니다." -#: 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 " "from this part of the query." msgstr "" -"\"%s\" ì´ë¦„ì˜ ì¹¼ëŸ¼ì´ \"%s\" í…Œì´ë¸”ì— ìžˆì§€ë§Œ, ì´ ì¿¼ë¦¬ì˜ ì´ ë¶€ë¶„ì—서는 " -"ì°¸ì¡°ë  ìˆ˜ 없습니다." +"\"%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 "ë°°ì—´ 요소를 DEFAULT 로 설정할 수 없습니다." -#: parser/parse_target.c:454 +#: parser/parse_target.c:465 #, c-format msgid "cannot set a subfield to DEFAULT" msgstr "하위필드를 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 "ì—´ \"%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 " @@ -14370,7 +14456,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 " @@ -14379,19 +14465,19 @@ 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" 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 * êµ¬ë¬¸ì€ ìœ íš¨í•˜ì§€ 않습니다." @@ -14433,146 +14519,146 @@ msgstr "ìžë£Œí˜• 한정ìžëŠ” 단순 ìƒìˆ˜ ë˜ëŠ” ì‹ë³„ìžì—¬ì•¼ 함" msgid "invalid type name \"%s\"" msgstr "\"%s\" ìžë£Œí˜• ì´ë¦„ì€ ìœ íš¨í•˜ì§€ ì•Šì€ ìžë£Œí˜•입니다." -#: parser/parse_utilcmd.c:399 +#: parser/parse_utilcmd.c:384 #, c-format msgid "array of serial is not implemented" msgstr "serial ë°°ì—´ì´ êµ¬í˜„ë˜ì§€ 않ìŒ" -#: 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 명령으로 \"%s\" 시퀀스가 ìžë™ìœ¼ë¡œ ë§Œë“¤ì–´ì§ (\"%s.%s\" serial ì—´ 때문)" -#: 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 "NULL/NOT NULL ì„ ì–¸ì´ ì„œë¡œ ì¶©ëŒí•©ë‹ˆë‹¤ : column \"%s\" of 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 "\"%s\" ì—´(\"%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 "기본키 제약 ì¡°ê±´ì„ ì™¸ë¶€ í…Œì´ë¸”ì—서는 사용할 수 ì—†ìŒ" -#: 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 "ìœ ë‹ˆí¬ ì œì•½ ì¡°ê±´ì€ ì™¸ë¶€ í…Œì´ë¸”ì—서는 사용할 수 ì—†ìŒ" -#: 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 "참조키 제약 ì¡°ê±´ì€ ì™¸ë¶€ í…Œì´ë¸”ì—서는 사용할 수 ì—†ìŒ" -#: parser/parse_utilcmd.c:693 +#: parser/parse_utilcmd.c:678 #, c-format msgid "exclusion constraints are not supported on foreign tables" msgstr "제외 제약 ì¡°ê±´ì€ ì™¸ë¶€ í…Œì´ë¸”ì—서는 사용할 수 ì—†ìŒ" -#: parser/parse_utilcmd.c:757 +#: parser/parse_utilcmd.c:742 #, 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:1275 parser/parse_utilcmd.c:1351 #, c-format msgid "Index \"%s\" contains a whole-row table reference." msgstr "" -#: parser/parse_utilcmd.c:1636 +#: parser/parse_utilcmd.c:1621 #, c-format msgid "cannot use an existing index in CREATE TABLE" msgstr "" -#: parser/parse_utilcmd.c:1656 +#: parser/parse_utilcmd.c:1641 #, c-format msgid "index \"%s\" is already associated with a constraint" msgstr "" -#: parser/parse_utilcmd.c:1664 +#: parser/parse_utilcmd.c:1649 #, c-format msgid "index \"%s\" does not belong to table \"%s\"" msgstr "\"%s\" ì¸ë±ìŠ¤ê°€ \"%s\" í…Œì´ë¸”ìš©ì´ ì•„ë‹˜" -#: parser/parse_utilcmd.c:1671 +#: parser/parse_utilcmd.c:1656 #, c-format msgid "index \"%s\" is not valid" msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” 사용가능 ìƒíƒœê°€ 아님" -#: parser/parse_utilcmd.c:1677 +#: parser/parse_utilcmd.c:1662 #, 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: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:1684 +#: parser/parse_utilcmd.c:1669 #, c-format msgid "index \"%s\" contains expressions" msgstr "\"%s\" ì¸ë±ìŠ¤ì— í‘œí˜„ì‹ì´ í¬í•¨ë˜ì–´ 있ìŒ" -#: parser/parse_utilcmd.c:1691 +#: parser/parse_utilcmd.c:1676 #, c-format msgid "\"%s\" is a partial index" msgstr "\"%s\" ê°ì²´ëŠ” 부분 ì¸ë±ìŠ¤ìž„" -#: parser/parse_utilcmd.c:1703 +#: parser/parse_utilcmd.c:1688 #, c-format msgid "\"%s\" is a deferrable index" msgstr "\"%s\" ê°ì²´ëŠ” 지연가능한 ì¸ë±ìŠ¤ìž„" -#: parser/parse_utilcmd.c:1704 +#: parser/parse_utilcmd.c:1689 #, c-format msgid "Cannot create a non-deferrable constraint using a deferrable index." msgstr "" -#: parser/parse_utilcmd.c:1761 +#: parser/parse_utilcmd.c:1746 #, c-format msgid "index \"%s\" does not have default sorting behavior" msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” 기본 ì •ë ¬ ë°©ë²•ì´ ì—†ìŒ" -#: parser/parse_utilcmd.c:1908 +#: parser/parse_utilcmd.c:1893 #, c-format msgid "column \"%s\" appears twice in primary key constraint" msgstr "기본키 제약 ì¡°ê±´ì—서 \"%s\" ì—´ì´ ë‘ ë²ˆ 지정ë˜ì—ˆìŠµë‹ˆë‹¤" -#: parser/parse_utilcmd.c:1914 +#: parser/parse_utilcmd.c:1899 #, c-format msgid "column \"%s\" appears twice in unique constraint" msgstr "고유 제약 ì¡°ê±´ì—서 \"%s\" ì—´ì´ ë‘ ë²ˆ 지정ë˜ì—ˆìŠµë‹ˆë‹¤" -#: parser/parse_utilcmd.c:2118 +#: parser/parse_utilcmd.c:2103 #, c-format msgid "index expression cannot return a set" msgstr "ì¸ë±ìФ ì‹ì€ 세트를 반환할 수 ì—†ìŒ" -#: 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 "ì¸ë±ìФ ì‹ ë° ìˆ ì–´ëŠ” ì¸ë±ì‹±ë˜ëŠ” í…Œì´ë¸”ë§Œ 참조할 수 있ìŒ" -#: parser/parse_utilcmd.c:2175 +#: parser/parse_utilcmd.c:2160 #, c-format msgid "rules on materialized views are not supported" msgstr "êµ¬ì²´í™”ëœ ë·°ì—ì„œì˜ ë£°ì€ ì§€ì›í•˜ì§€ 않ìŒ" -#: parser/parse_utilcmd.c:2236 +#: parser/parse_utilcmd.c:2221 #, c-format msgid "rule WHERE condition cannot contain references to other relations" msgstr "룰ì—서 지정한 WHERE ì¡°ê±´ì— ë‹¤ë¥¸ 릴레ì´ì…˜ì— 대한 참조를 í¬í•¨í•  수 ì—†ìŒ" -#: 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 " @@ -14581,83 +14667,83 @@ msgstr "" "룰ì—서 지정한 WHERE ì¡°ê±´ì´ ìžˆëŠ” 규칙ì—는 SELECT, INSERT, UPDATE ë˜ëŠ” DELETE " "작업만 í¬í•¨í•  수 있ìŒ" -#: parser/parse_utilcmd.c:2326 parser/parse_utilcmd.c:2425 +#: 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:2344 +#: parser/parse_utilcmd.c:2329 #, c-format msgid "ON SELECT rule cannot use OLD" msgstr "ON SELECT ë£°ì€ OLD를 사용할 수 ì—†ìŒ" -#: parser/parse_utilcmd.c:2348 +#: parser/parse_utilcmd.c:2333 #, c-format msgid "ON SELECT rule cannot use NEW" msgstr "ON SELECT ë£°ì€ NEW를 사용할 수 ì—†ìŒ" -#: parser/parse_utilcmd.c:2357 +#: parser/parse_utilcmd.c:2342 #, c-format msgid "ON INSERT rule cannot use OLD" msgstr "ON INSERT ë£°ì€ OLD를 사용할 수 ì—†ìŒ" -#: parser/parse_utilcmd.c:2363 +#: parser/parse_utilcmd.c:2348 #, c-format msgid "ON DELETE rule cannot use NEW" msgstr "ON DELETE ë£°ì€ NEW를 사용할 수 ì—†ìŒ" -#: parser/parse_utilcmd.c:2391 +#: parser/parse_utilcmd.c:2376 #, c-format msgid "cannot refer to OLD within WITH query" msgstr "" -#: parser/parse_utilcmd.c:2398 +#: parser/parse_utilcmd.c:2383 #, c-format msgid "cannot refer to NEW within WITH query" msgstr "" -#: parser/parse_utilcmd.c:2601 +#: parser/parse_utilcmd.c:2586 #, c-format msgid "transform expression must not return a set" msgstr "transform 표현ì‹ì€ í•˜ë‚˜ì˜ ì„¸íŠ¸ë¥¼ 리턴하면 안ë©ë‹ˆë‹¤" -#: parser/parse_utilcmd.c:2715 +#: parser/parse_utilcmd.c:2700 #, c-format msgid "misplaced DEFERRABLE clause" msgstr "DEFERABLE ì ˆì´ ìž˜ëª» 놓여져 있습니다" -#: 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 "여러 ê°œì˜ DEFERRABLE/NOT DEFERRABLEì ˆì€ ì‚¬ìš©í•  수 없습니다" -#: parser/parse_utilcmd.c:2730 +#: parser/parse_utilcmd.c:2715 #, c-format msgid "misplaced NOT DEFERRABLE clause" msgstr "NOT DEFERABLE ì ˆì´ ìž˜ëª» 놓여 있습니다" -#: parser/parse_utilcmd.c:2743 parser/parse_utilcmd.c:2769 gram.y:4902 +#: 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:2751 +#: parser/parse_utilcmd.c:2736 #, c-format msgid "misplaced INITIALLY DEFERRED clause" msgstr "INITIALLY DEFERRED ì ˆì´ ìž˜ëª» 놓여 있습니다" -#: 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 "여러 ê°œì˜ INITIALLY IMMEDIATE/DEFERRED ì ˆì€ í—ˆìš©ë˜ì§€ 않습니다" -#: parser/parse_utilcmd.c:2777 +#: parser/parse_utilcmd.c:2762 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" msgstr "INITIALLY IMMEDIATE ì ˆì´ ìž˜ëª» 놓여 있습니다" -#: 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)" @@ -14695,8 +14781,8 @@ msgstr "" "ì´ ì˜¤ë¥˜ëŠ” 시스템ì—서 지정한 최소 세마í¬ì–´ 수(SEMMNI)ê°€ 너무 í¬ê±°ë‚˜, 최대 세마" "í¬ì–´ 수(SEMMNS)ê°€ 너무 ì ì–´ì„œ 서버를 실행할 수 ì—†ì„ ë•Œ ë°œìƒí•©ë‹ˆë‹¤. ì´ì— ë”°" "ë¼, ì •ìƒì ìœ¼ë¡œ 서버가 실행ë˜ë ¤ë©´, 시스템 ê°’ë“¤ì„ ì¡°ì •í•  필요가 있습니다. 아니" -"ë©´, 다른 방법으로, PostgreSQLì˜ í™˜ê²½ 설정ì—서 max_connections ê°’ì„ ì¤„ì—¬ì„œ " -"세마í¬ì–´ 사용 수를 줄여보십시오.\n" +"ë©´, 다른 방법으로, PostgreSQLì˜ í™˜ê²½ 설정ì—서 max_connections ê°’ì„ ì¤„ì—¬ì„œ 세" +"마í¬ì–´ 사용 수를 줄여보십시오.\n" "보다 ìžì„¸í•œ ë‚´ìš©ì€ PostgreSQL ê´€ë¦¬ìž ë©”ë‰´ì–¼ì„ ì°¸ì¡° 하십시오." #: port/pg_sema.c:148 port/sysv_sema.c:148 @@ -14719,6 +14805,7 @@ 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 " @@ -14726,11 +14813,12 @@ msgid "" "The PostgreSQL documentation contains more information about shared memory " "configuration." msgstr "" -"ì´ ì˜¤ë¥˜ë¥¼ ì¼ë°˜ì ìœ¼ë¡œ PostgreSQLì—서 사용할 공유 메모리 í¬ê¸°ê°€ " -"커ë„ì˜ SHMMAX 값보다 í¬ê±°ë‚˜, SHMMIN 값보다 ì ì€ 경우 ë°œìƒí•©ë‹ˆë‹¤.\n" +"ì´ ì˜¤ë¥˜ë¥¼ ì¼ë°˜ì ìœ¼ë¡œ 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 " @@ -14738,12 +14826,12 @@ msgid "" "The PostgreSQL documentation contains more information about shared memory " "configuration." msgstr "" -"ì´ ì˜¤ë¥˜ë¥¼ ì¼ë°˜ì ìœ¼ë¡œ PostgreSQLì—서 사용할 공유 í¬ê¸°ê°€ " -"커ë„ì˜ SHMALL 값보다 í° ê²½ìš° ë°œìƒí•©ë‹ˆë‹¤. ì»¤ë„ í™˜ê²½ ë³€ìˆ˜ì¸ " -"SHMALL ê°’ì„ ì¢€ ë” í¬ê²Œ 설정하세요.\n" +"ì´ ì˜¤ë¥˜ë¥¼ ì¼ë°˜ì ìœ¼ë¡œ 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 " @@ -14753,8 +14841,8 @@ msgid "" "configuration." msgstr "" "ì´ ì˜¤ë¥˜ëŠ” 서버를 ì‹¤í–‰í•˜ëŠ”ë° í•„ìš”í•œ ë””ìŠ¤í¬ ê³µê°„ì´ ë¶€ì¡±í•´ì„œ ë°œìƒí•œ ê²ƒì´ ì•„ë‹™ë‹ˆ" -"다. ì´ ì˜¤ë¥˜ëŠ” 서버가 사용할 공유 메모리 ID를 ì„ ì í•˜ì§€ ëª»í–ˆì„ ë•Œ ë°œìƒí•©ë‹ˆë‹¤. " -"ì»¤ë„ í™˜ê²½ ì„¤ì •ê°’ì¸ SHMMNI ê°’ì„ ëŠ˜ë¦¬ê±°ë‚˜, ì‹œìŠ¤í…œì˜ ê°€ìš© 공유 ë©”ëª¨ë¦¬ëŸ‰ì„ " +"다. ì´ ì˜¤ë¥˜ëŠ” 서버가 사용할 공유 메모리 ID를 ì„ ì í•˜ì§€ ëª»í–ˆì„ ë•Œ ë°œìƒí•©ë‹ˆ" +"다. ì»¤ë„ í™˜ê²½ ì„¤ì •ê°’ì¸ SHMMNI ê°’ì„ ëŠ˜ë¦¬ê±°ë‚˜, ì‹œìŠ¤í…œì˜ ê°€ìš© 공유 ë©”ëª¨ë¦¬ëŸ‰ì„ " "확보하세요.\n" "공유 메모리 ì„¤ì •ì— ëŒ€í•œ 보다 ìžì„¸í•œ ë‚´ìš©ì€ PostgreSQL 문서를 참조하십시오." @@ -14771,10 +14859,10 @@ msgid "" "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 ê°’ì„ ì¤„ì—¬ 보십시오." +"ì´ ì˜¤ë¥˜ëŠ” ì¼ë°˜ì ìœ¼ë¡œ 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 @@ -14904,35 +14992,36 @@ msgstr "autovacuum ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ë¥¼ 실행할 수 ì—†ìŒ: %m" msgid "autovacuum: processing database \"%s\"" msgstr "autovacuum: \"%s\" ë°ì´í„°ë² ì´ìФ 처리 중" -#: postmaster/autovacuum.c:2050 +#: postmaster/autovacuum.c:2052 #, c-format msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" -"autovacuum: \"%s\".\"%s\" 사용 않는 임시 í…Œì´ë¸”ì„ \"%s\" ë°ì´í„°ë² ì´ìФì—서 삭제하는 " -"중" +"autovacuum: \"%s\".\"%s\" 사용 않는 임시 í…Œì´ë¸”ì„ \"%s\" ë°ì´í„°ë² ì´ìФì—서 ì‚­" +"제하는 중" -#: postmaster/autovacuum.c:2062 +#: postmaster/autovacuum.c:2064 #, c-format msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" -"autovacuum: \"%s\".\"%s\" 사용 않는 임시 í…Œì´ë¸”ì„ \"%s\" ë°ì´í„°ë² ì´ìФì—서 찾았ìŒ" +"autovacuum: \"%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\" í…Œì´ë¸” 대ìƒìœ¼ë¡œ ìžë™ vacuum 작업 함" -#: 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\" ì˜µì…˜ì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤." @@ -14976,7 +15065,8 @@ msgstr "ê´€ë¦¬ìž ëª…ë ¹ì— ì˜í•´ \"%s\" 백그ë¼ìš´ë“œ 작업ìžë¥¼ 종료합 msgid "" "background worker \"%s\": must be registered in shared_preload_libraries" msgstr "" -"\"%s\" 백그ë¼ìš´ë“œ 작업ìž: 먼저 shared_preload_libraries 설정값으로 등ë¡ë˜ì–´ì•¼ 합니다." +"\"%s\" 백그ë¼ìš´ë“œ 작업ìž: 먼저 shared_preload_libraries 설정값으로 등ë¡ë˜ì–´" +"야 합니다." #: postmaster/bgworker.c:764 #, c-format @@ -14987,6 +15077,7 @@ msgstr "" "\"%s\" 백그ë¼ìš´ë“œ 작업ìž: ë™ì  백그ë¼ìš´ë“œ 작업ìžë§Œ ì•Œë¦¼ì„ ìš”ì²­í•  수 있ìŒ" #: postmaster/bgworker.c:779 +#, c-format msgid "too many background workers" msgstr "백그ë¼ìš´ë“œ 작업ìžê°€ 너무 ë§ŽìŒ" @@ -14995,8 +15086,7 @@ msgstr "백그ë¼ìš´ë“œ 작업ìžê°€ 너무 ë§ŽìŒ" 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ê°œì˜ ë°±ê·¸ë¼ìš´ë“œ 작업ìžë¥¼ 사용할 수 있습니다." +msgstr[0] "현재 설정으로는 %dê°œì˜ ë°±ê·¸ë¼ìš´ë“œ 작업ìžë¥¼ 사용할 수 있습니다." #: postmaster/bgworker.c:784 #, c-format @@ -15011,6 +15101,7 @@ 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\" 환경 매개 변수 ê°’ì„ ì¢€ ëŠë ¤ë³´ì‹­ì‹œì˜¤." @@ -15050,8 +15141,8 @@ msgid "" "archiving transaction log file \"%s\" failed too many times, will try again " "later" msgstr "" -"\"%s\" 트랜잭션 로그 íŒŒì¼ ì•„ì¹´ì´ë¸Œ ìž‘ì—…ì´ ê³„ì† ì‹¤íŒ¨í•˜ê³  있습니다. " -"다ìŒì— ë˜ ì‹œë„í•  것입니다." +"\"%s\" 트랜잭션 로그 íŒŒì¼ ì•„ì¹´ì´ë¸Œ ìž‘ì—…ì´ ê³„ì† ì‹¤íŒ¨í•˜ê³  있습니다. 다ìŒì— ë˜ " +"시ë„í•  것입니다." #: postmaster/pgarch.c:587 #, c-format @@ -15069,12 +15160,11 @@ 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:3491 #, c-format msgid "" "See C include file \"ntstatus.h\" for a description of the hexadecimal value." -msgstr "" -"16진수 ê°’ì— ëŒ€í•œ ì„¤ëª…ì€ C í¬í•¨ íŒŒì¼ \"ntstatus.h\"를 참조하십시오." +msgstr "16진수 ê°’ì— ëŒ€í•œ ì„¤ëª…ì€ C í¬í•¨ íŒŒì¼ \"ntstatus.h\"를 참조하십시오." #: postmaster/pgarch.c:603 #, c-format @@ -15234,8 +15324,7 @@ msgstr "" #: postmaster/pgstat.c:5103 #, c-format msgid "database hash table corrupted during cleanup --- abort" -msgstr "" -"정리하는 ë™ì•ˆ ë°ì´í„°ë² ì´ìФ 해시 í…Œì´ë¸”ì´ ì†ìƒ ë˜ì—ˆìŠµë‹ˆë‹¤ --- 중지함" +msgstr "정리하는 ë™ì•ˆ ë°ì´í„°ë² ì´ìФ 해시 í…Œì´ë¸”ì´ ì†ìƒ ë˜ì—ˆìŠµë‹ˆë‹¤ --- 중지함" #: postmaster/postmaster.c:684 #, c-format @@ -15261,8 +15350,7 @@ msgstr "" #: 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" +msgstr "%s: max_wal_senders ê°’ì€ max_connections 값보다 작아야합니다\n" #: postmaster/postmaster.c:870 #, c-format @@ -15275,8 +15363,8 @@ msgid "" "WAL streaming (max_wal_senders > 0) requires wal_level \"replica\" or " "\"logical\"" msgstr "" -"WAL ìŠ¤íŠ¸ë¦¬ë° ìž‘ì—…(max_wal_senders > 0 ì¸ê²½ìš°)ì€ wal_level ê°’ì´ " -"\"replica\" ë˜ëŠ” \"logical\" ì´ì–´ì•¼ 합니다." +"WAL ìŠ¤íŠ¸ë¦¬ë° ìž‘ì—…(max_wal_senders > 0 ì¸ê²½ìš°)ì€ wal_level ê°’ì´ \"replica\" ë˜" +"는 \"logical\" ì´ì–´ì•¼ 합니다." #: postmaster/postmaster.c:881 #, c-format @@ -15365,8 +15453,8 @@ msgid "" "This may indicate an incomplete PostgreSQL installation, or that the file " "\"%s\" has been moved away from its proper location." msgstr "" -"ì´ ë¬¸ì œëŠ” PostgreSQL 설치가 불완전하게 ë˜ì—ˆê±°ë‚˜, \"%s\" 파ì¼ì´ 올바른 " -"ìœ„ì¹˜ì— ìžˆì§€ 않아서 ë°œìƒí–ˆìŠµë‹ˆë‹¤." +"ì´ ë¬¸ì œëŠ” PostgreSQL 설치가 불완전하게 ë˜ì—ˆê±°ë‚˜, \"%s\" 파ì¼ì´ 올바른 ìœ„ì¹˜ì— " +"있지 않아서 ë°œìƒí–ˆìŠµë‹ˆë‹¤." #: postmaster/postmaster.c:1436 #, c-format @@ -15419,363 +15507,363 @@ msgstr "" msgid "select() failed in postmaster: %m" msgstr "postmasterì—서 select() ìž‘ë™ ì‹¤íŒ¨: %m" -#: postmaster/postmaster.c:1827 +#: postmaster/postmaster.c:1828 #, 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:1906 postmaster/postmaster.c:1937 #, c-format msgid "incomplete startup packet" msgstr "ì•„ì§ ì™„ë£Œë˜ì§€ ì•Šì€ ì‹œìž‘ 패킷" -#: postmaster/postmaster.c:1917 +#: postmaster/postmaster.c:1918 #, c-format msgid "invalid length of startup packet" msgstr "시작 íŒ¨í‚·ì˜ ê¸¸ì´ê°€ 잘못 ë˜ì—ˆìŠµë‹ˆë‹¤" -#: postmaster/postmaster.c:1975 +#: postmaster/postmaster.c:1976 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "SSL ì—°ê²° ìž‘ì—…ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤: %m" -#: postmaster/postmaster.c:2004 +#: 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:2067 utils/misc/guc.c:5662 utils/misc/guc.c:5755 -#: utils/misc/guc.c:7053 utils/misc/guc.c:9797 utils/misc/guc.c:9831 +#: 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:2070 +#: postmaster/postmaster.c:2071 #, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." msgstr "" -#: postmaster/postmaster.c:2090 +#: postmaster/postmaster.c:2091 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "ìž˜ëª»ëœ ì‹œìž‘ 패킷 ë ˆì´ì•„웃: 마지막 ë°”ì´íŠ¸ë¡œ 종결문ìžê°€ 발견ë˜ì—ˆìŒ" -#: postmaster/postmaster.c:2118 +#: postmaster/postmaster.c:2119 #, c-format msgid "no PostgreSQL user name specified in startup packet" msgstr "시작 패킷ì—서 지정한 사용ìžëŠ” PostgreSQL ì‚¬ìš©ìž ì´ë¦„ì´ ì•„ë‹™ë‹ˆë‹¤" -#: postmaster/postmaster.c:2177 +#: postmaster/postmaster.c:2178 #, c-format msgid "the database system is starting up" msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ìƒˆë¡œ ê°€ë™ ì¤‘ìž…ë‹ˆë‹¤." -#: postmaster/postmaster.c:2182 +#: postmaster/postmaster.c:2183 #, c-format msgid "the database system is shutting down" msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ì¤‘ì§€ 중입니다" -#: postmaster/postmaster.c:2187 +#: postmaster/postmaster.c:2188 #, c-format msgid "the database system is in recovery mode" msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ìžë™ 복구 작업 중입니다." -#: postmaster/postmaster.c:2192 storage/ipc/procarray.c:297 +#: 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:2254 +#: postmaster/postmaster.c:2255 #, c-format msgid "wrong key in cancel request for process %d" msgstr "프로세스 %dì— ëŒ€í•œ 취소 ìš”ì²­ì— ìž˜ëª»ëœ í‚¤ê°€ 있ìŒ" -#: postmaster/postmaster.c:2262 +#: postmaster/postmaster.c:2263 #, c-format msgid "PID %d in cancel request did not match any process" msgstr "취소 ìš”ì²­ì˜ PID %dê³¼(와) ì¼ì¹˜í•˜ëŠ” 프로세스가 ì—†ìŒ" -#: postmaster/postmaster.c:2482 +#: postmaster/postmaster.c:2483 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "SIGHUP 신호를 받아서, 환경설정파ì¼ì„ 다시 ì½ê³  있습니다." -#: postmaster/postmaster.c:2507 +#: postmaster/postmaster.c:2508 #, c-format msgid "pg_hba.conf not reloaded" msgstr "pg_hba.confê°€ 다시 로드ë˜ì§€ 않ìŒ" -#: postmaster/postmaster.c:2511 +#: postmaster/postmaster.c:2512 #, c-format msgid "pg_ident.conf not reloaded" msgstr "pg_ident.conf 파ì¼ì´ 다시 로드ë˜ì§€ 않ìŒ" -#: postmaster/postmaster.c:2552 +#: postmaster/postmaster.c:2553 #, c-format msgid "received smart shutdown request" msgstr "smart 중지 ìš”ì²­ì„ ë°›ì•˜ìŠµë‹ˆë‹¤." -#: postmaster/postmaster.c:2607 +#: postmaster/postmaster.c:2608 #, c-format msgid "received fast shutdown request" msgstr "fast 중지 ìš”ì²­ì„ ë°›ì•˜ìŠµë‹ˆë‹¤." -#: postmaster/postmaster.c:2637 +#: postmaster/postmaster.c:2638 #, c-format msgid "aborting any active transactions" msgstr "모든 활성화 ë˜ì–´ìžˆëŠ” íŠ¸ëžœìž­ì…˜ì„ ì¤‘ì§€í•˜ê³  있습니다." -#: postmaster/postmaster.c:2671 +#: postmaster/postmaster.c:2672 #, c-format msgid "received immediate shutdown request" msgstr "immediate 중지 ìš”ì²­ì„ ë°›ì•˜ìŠµë‹ˆë‹¤." -#: postmaster/postmaster.c:2735 +#: postmaster/postmaster.c:2736 #, c-format msgid "shutdown at recovery target" msgstr "복구 타겟ì—서 중지함" -#: postmaster/postmaster.c:2751 postmaster/postmaster.c:2774 +#: postmaster/postmaster.c:2752 postmaster/postmaster.c:2775 msgid "startup process" msgstr "시작 프로세스" -#: postmaster/postmaster.c:2754 +#: postmaster/postmaster.c:2755 #, c-format msgid "aborting startup due to startup process failure" msgstr "시작 프로세스 실패 ë•Œë¬¸ì— ì„œë²„ ì‹œìž‘ì´ ì¤‘ì§€ ë˜ì—ˆìŠµë‹ˆë‹¤" -#: postmaster/postmaster.c:2815 +#: postmaster/postmaster.c:2816 #, c-format msgid "database system is ready to accept connections" msgstr "ì´ì œ ë°ì´í„°ë² ì´ìФ 서버로 ì ‘ì†í•  수 있습니다" -#: postmaster/postmaster.c:2834 +#: postmaster/postmaster.c:2835 msgid "background writer process" msgstr "백그ë¼ìš´ë“œ writer 프로세스" -#: postmaster/postmaster.c:2888 +#: postmaster/postmaster.c:2889 msgid "checkpointer process" msgstr "ì²´í¬í¬ì¸íЏ 프로세스" -#: postmaster/postmaster.c:2904 +#: postmaster/postmaster.c:2905 msgid "WAL writer process" msgstr "WAL 쓰기 프로세스" -#: postmaster/postmaster.c:2918 +#: postmaster/postmaster.c:2919 msgid "WAL receiver process" msgstr "WAL 수신 프로세스" -#: postmaster/postmaster.c:2933 +#: postmaster/postmaster.c:2934 msgid "autovacuum launcher process" msgstr "autovacuum 실행기 프로세스" -#: postmaster/postmaster.c:2948 +#: postmaster/postmaster.c:2949 msgid "archiver process" msgstr "archiver 프로세스" -#: postmaster/postmaster.c:2964 +#: postmaster/postmaster.c:2965 msgid "statistics collector process" msgstr "통계 수집기 프로세스" -#: postmaster/postmaster.c:2978 +#: postmaster/postmaster.c:2979 msgid "system logger process" msgstr "시스템 로그 프로세스" -#: postmaster/postmaster.c:3040 +#: postmaster/postmaster.c:3041 msgid "worker process" msgstr "ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤" -#: postmaster/postmaster.c:3123 postmaster/postmaster.c:3143 -#: postmaster/postmaster.c:3150 postmaster/postmaster.c:3168 +#: postmaster/postmaster.c:3124 postmaster/postmaster.c:3144 +#: postmaster/postmaster.c:3151 postmaster/postmaster.c:3169 msgid "server process" msgstr "서버 프로세스" -#: postmaster/postmaster.c:3222 +#: 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:3478 +#: postmaster/postmaster.c:3479 #, 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: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:3488 +#: 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:3498 +#: 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:3509 +#: 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:3519 +#: postmaster/postmaster.c:3520 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d) 프로세스가 ì¸ì‹í•  수 없는 %d ìƒíƒœë¡œ 종료ë¨" -#: postmaster/postmaster.c:3706 +#: postmaster/postmaster.c:3707 #, c-format msgid "abnormal database system shutdown" msgstr "비정ìƒì ì¸ ë°ì´í„°ë² ì´ìФ 시스템 서비스를 중지" -#: postmaster/postmaster.c:3746 +#: postmaster/postmaster.c:3747 #, c-format msgid "all server processes terminated; reinitializing" msgstr "모든 서버 프로세스가 중지 ë˜ì—ˆìŠµë‹ˆë‹¤; 재 초기화 중" -#: postmaster/postmaster.c:3958 +#: postmaster/postmaster.c:3959 #, c-format msgid "could not fork new process for connection: %m" msgstr "ì—°ê²°ì„ ìœ„í•œ 새 프로세스 할당(fork) 실패: %m" -#: postmaster/postmaster.c:4000 +#: postmaster/postmaster.c:4001 msgid "could not fork new process for connection: " msgstr "ì—°ê²°ì„ ìœ„í•œ 새 프로세스 할당(fork) 실패: " -#: postmaster/postmaster.c:4114 +#: postmaster/postmaster.c:4115 #, c-format msgid "connection received: host=%s port=%s" msgstr "ì ‘ì† ìˆ˜ë½: host=%s port=%s" -#: postmaster/postmaster.c:4119 +#: postmaster/postmaster.c:4120 #, c-format msgid "connection received: host=%s" msgstr "ì ‘ì† ìˆ˜ë½: host=%s" -#: postmaster/postmaster.c:4402 +#: postmaster/postmaster.c:4403 #, c-format msgid "could not execute server process \"%s\": %m" msgstr "\"%s\" 서버 프로세스를 실행할 수 ì—†ìŒ: %m" -#: postmaster/postmaster.c:4946 +#: postmaster/postmaster.c:4947 #, c-format msgid "database system is ready to accept read only connections" msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ì½ê¸° 전용으로 ì—°ê²°ì„ ìˆ˜ë½í•  준비가 ë˜ì—ˆìŠµë‹ˆë‹¤." -#: postmaster/postmaster.c:5237 +#: postmaster/postmaster.c:5238 #, c-format msgid "could not fork startup process: %m" msgstr "시작 프로세스 할당(fork) 실패: %m" -#: postmaster/postmaster.c:5241 +#: postmaster/postmaster.c:5242 #, c-format msgid "could not fork background writer process: %m" msgstr "백그ë¼ìš´ writer 프로세스를 할당(fork)í•  수 없습니다: %m" -#: postmaster/postmaster.c:5245 +#: postmaster/postmaster.c:5246 #, c-format msgid "could not fork checkpointer process: %m" msgstr "ì²´í¬í¬ì¸íЏ 프로세스를 할당(fork)í•  수 없습니다: %m" -#: postmaster/postmaster.c:5249 +#: postmaster/postmaster.c:5250 #, c-format msgid "could not fork WAL writer process: %m" msgstr "WAL 쓰기 프로세스를 할당(fork)í•  수 ì—†ìŒ: %m" -#: postmaster/postmaster.c:5253 +#: postmaster/postmaster.c:5254 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "WAL 수신 프로세스를 할당(fork)í•  수 ì—†ìŒ: %m" -#: postmaster/postmaster.c:5257 +#: postmaster/postmaster.c:5258 #, c-format msgid "could not fork process: %m" msgstr "프로세스 할당(fork) 실패: %m" -#: postmaster/postmaster.c:5419 postmaster/postmaster.c:5442 +#: postmaster/postmaster.c:5420 postmaster/postmaster.c:5443 #, c-format msgid "database connection requirement not indicated during registration" msgstr "" -#: postmaster/postmaster.c:5426 postmaster/postmaster.c:5449 +#: postmaster/postmaster.c:5427 postmaster/postmaster.c:5450 #, c-format msgid "invalid processing mode in background worker" msgstr "백그ë¼ìš´ë“œ 작업ìžì—서 ìž˜ëª»ëœ í”„ë¡œì„¸ì‹± 모드가 사용ë¨" -#: postmaster/postmaster.c:5501 +#: postmaster/postmaster.c:5502 #, c-format msgid "starting background worker process \"%s\"" msgstr "\"%s\" 백그ë¼ìš´ë“œ ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ë¥¼ 시작합니다." -#: postmaster/postmaster.c:5512 +#: postmaster/postmaster.c:5513 #, c-format msgid "could not fork worker process: %m" msgstr "ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ë¥¼ 할당(fork)í•  수 ì—†ìŒ: %m" -#: postmaster/postmaster.c:5900 +#: 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:5932 +#: postmaster/postmaster.c:5933 #, c-format msgid "could not create inherited socket: error code %d\n" msgstr "ìƒì†ëœ ì†Œì¼“ì„ ë§Œë“¤ 수 ì—†ìŒ: 오류 코드 %d\n" -#: postmaster/postmaster.c:5961 +#: postmaster/postmaster.c:5962 #, c-format msgid "could not open backend variables file \"%s\": %s\n" msgstr "\"%s\" 백엔드 변수 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: postmaster/postmaster.c:5968 +#: postmaster/postmaster.c:5969 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" msgstr "\"%s\" 백엔드 변수 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %s\n" -#: postmaster/postmaster.c:5977 +#: postmaster/postmaster.c:5978 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "\"%s\" 파ì¼ì„ 삭제할 수 ì—†ìŒ: %s\n" -#: postmaster/postmaster.c:5994 +#: 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:6003 +#: 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:6010 +#: 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:6171 +#: postmaster/postmaster.c:6172 #, c-format msgid "could not read exit code for process\n" msgstr "í”„ë¡œì„¸ìŠ¤ì˜ ì¢…ë£Œ 코드를 ì½ì„ 수 ì—†ìŒ\n" -#: postmaster/postmaster.c:6176 +#: postmaster/postmaster.c:6177 #, c-format msgid "could not post child completion status\n" msgstr "하위 완료 ìƒíƒœë¥¼ 게시할 수 ì—†ìŒ\n" @@ -15841,67 +15929,68 @@ msgstr "" msgid "could not determine which collation to use for regular expression" msgstr "ì •ê·œì‹ì„ 사용해서 사용할 정렬규칙(collation)ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" -#: 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 "\"%s\" WAL íŒŒì¼ ì°¾ê¸° 실패" -#: 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 "\"%s\" WAL 파ì¼ì˜ í¬ê¸°ê°€ 알맞지 않ìŒ" -#: 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\"" msgstr "" -"tar í¬ë©§ì„ 사용하기ì—는 심볼릭 ë§í¬ì˜ ëŒ€ìƒ ê²½ë¡œê°€ 너무 ê¹ë‹ˆë‹¤: íŒŒì¼ ì´ë¦„ \"%s\", ëŒ€ìƒ \"%s\"" +"tar í¬ë©§ì„ 사용하기ì—는 심볼릭 ë§í¬ì˜ ëŒ€ìƒ ê²½ë¡œê°€ 너무 ê¹ë‹ˆë‹¤: íŒŒì¼ ì´ë¦„ \"%s" +"\", ëŒ€ìƒ \"%s\"" #: replication/libpqwalreceiver/libpqwalreceiver.c:119 #, c-format @@ -15919,8 +16008,7 @@ msgid "" "could not receive database system identifier and timeline ID from the " "primary server: %s" msgstr "" -"주 서버ì—서 ë°ì´í„°ë² ì´ìФ 시스템 ì‹ë³„번호와 타임ë¼ì¸ 번호를 ë°›ì„ ìˆ˜ ì—†ìŒ: " -"%s" +"주 서버ì—서 ë°ì´í„°ë² ì´ìФ 시스템 ì‹ë³„번호와 타임ë¼ì¸ 번호를 ë°›ì„ ìˆ˜ ì—†ìŒ: %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:203 #: replication/libpqwalreceiver/libpqwalreceiver.c:357 @@ -15934,8 +16022,8 @@ msgid "" "Could not identify system: got %d rows and %d fields, expected %d rows and " "%d or more fields." msgstr "" -"ì‹œìŠ¤í…œì„ ì‹ë³„í•  수 ì—†ìŒ: 로우수 %d, 필드수 %d, 예ìƒê°’: 로우수 %d, 필드수 " -"%d ì´ìƒ" +"ì‹œìŠ¤í…œì„ ì‹ë³„í•  수 ì—†ìŒ: 로우수 %d, 필드수 %d, 예ìƒê°’: 로우수 %d, 필드수 %d " +"ì´ìƒ" #: replication/libpqwalreceiver/libpqwalreceiver.c:220 #, c-format @@ -15980,9 +16068,7 @@ 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 칼럼)ì„ " -"수신함" +msgstr "2ê°œì˜ ì¹¼ëŸ¼ìœ¼ë¡œ ëœ í•˜ë‚˜ì˜ íŠœí”Œì„ ì˜ˆìƒí•˜ì§€ë§Œ, %d 튜플 (%d 칼럼)ì„ ìˆ˜ì‹ í•¨" #: replication/libpqwalreceiver/libpqwalreceiver.c:386 #, c-format @@ -15990,7 +16076,7 @@ msgid "invalid socket: %s" msgstr "ìž˜ëª»ëœ ì†Œì¼“: %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:426 -#: storage/ipc/latch.c:1277 +#: storage/ipc/latch.c:1280 #, c-format msgid "select() failed: %m" msgstr "select() 실패: %m" @@ -16064,7 +16150,9 @@ 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 롤 ì˜µì…˜ì„ í¬í•¨í•œ 사용ìžë§Œ 사용할 수 있습니다." +msgstr "" +"복제 ìŠ¬ë¡¯ì€ superuser ë˜ëŠ” replication 롤 ì˜µì…˜ì„ í¬í•¨í•œ 사용ìžë§Œ 사용할 수 있" +"습니다." #: replication/logical/logicalfuncs.c:152 #, c-format @@ -16138,7 +16226,8 @@ 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 ê°’ì„ ëŠ˜ë¦¬ì„¸ìš”" +msgstr "" +"사용 가능한 복제 ìŠ¬ë¡¯ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. max_replication_slots ê°’ì„ ëŠ˜ë¦¬ì„¸ìš”" #: replication/logical/origin.c:730 #, c-format @@ -16194,7 +16283,8 @@ msgstr "reorderbuffer 처리용 파ì¼ì—서 ì½ê¸° 실패: %m" #, c-format msgid "" "could not read from reorderbuffer spill file: read %d instead of %u bytes" -msgstr "reorderbuffer 처리용 파ì¼ì—서 ì½ê¸° 실패: %d ë°”ì´íЏ ì½ìŒ, 기대값 %u ë°”ì´íЏ" +msgstr "" +"reorderbuffer 처리용 파ì¼ì—서 ì½ê¸° 실패: %d ë°”ì´íЏ ì½ìŒ, 기대값 %u ë°”ì´íЏ" #: replication/logical/reorderbuffer.c:3106 #, c-format @@ -16287,7 +16377,8 @@ msgid "" "Replication slot names may only contain lower case letters, numbers, and the " "underscore character." msgstr "" -"복제 슬롯 ì´ë¦„으로 사용할 수 있는 문ìžëŠ” ì˜ë¬¸ 소문ìž, 숫ìž, 밑줄(_) 문ìžìž…니다." +"복제 슬롯 ì´ë¦„으로 사용할 수 있는 문ìžëŠ” ì˜ë¬¸ 소문ìž, 숫ìž, 밑줄(_) 문ìžìž…니" +"다." #: replication/slot.c:254 #, c-format @@ -16373,8 +16464,8 @@ msgid "" "The transaction has already committed locally, but might not have been " "replicated to the standby." msgstr "" -"주 서버ì—서는 ì´ íŠ¸ëžœìž­ì…˜ì´ ì»¤ë°‹ë˜ì—ˆì§€ë§Œ, 복제용 대기 서버ì—서는 " -"ì•„ì§ ì»¤ë°‹ ë˜ì§€ ì•Šì•˜ì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤." +"주 서버ì—서는 ì´ íŠ¸ëžœìž­ì…˜ì´ ì»¤ë°‹ë˜ì—ˆì§€ë§Œ, 복제용 대기 서버ì—서는 ì•„ì§ ì»¤ë°‹ ë˜" +"ì§€ ì•Šì•˜ì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤." #: replication/syncrep.c:238 #, c-format @@ -16396,6 +16487,11 @@ msgstr "\"%s\" 대기 ì„œë²„ì˜ ë™ê¸°ì‹ 복제 우선순위가 %u 로 변경 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" @@ -16404,7 +16500,8 @@ msgstr "ê´€ë¦¬ìž ëª…ë ¹ìœ¼ë¡œ ì¸í•´ WAL 수신기를 종료합니다." #: replication/walreceiver.c:344 #, c-format msgid "highest timeline %u of the primary is behind recovery timeline %u" -msgstr "주 ì„œë²„ì˜ ì œì¼ ìµœì‹ ì˜ íƒ€ìž„ë¼ì¸ì€ %u ì¸ë°, 복구 타임ë¼ì¸ %u 보다 옛것입니다" +msgstr "" +"주 ì„œë²„ì˜ ì œì¼ ìµœì‹ ì˜ íƒ€ìž„ë¼ì¸ì€ %u ì¸ë°, 복구 타임ë¼ì¸ %u 보다 옛것입니다" #: replication/walreceiver.c:377 #, c-format @@ -16470,8 +16567,7 @@ msgstr "ë¬¼ë¦¬ì  ë³µì œì—서 ë…¼ë¦¬ì  ë³µì œ ìŠ¬ë¡¯ì„ ì‚¬ìš©í•  수 ì—†ìŒ" #, c-format msgid "" "requested starting point %X/%X on timeline %u is not in this server's history" -msgstr "" -"ìš”ì²­ëœ %X/%X 시작 위치(타임ë¼ì¸ %u)ê°€ ì´ ì„œë²„ ë‚´ì—­ì— ì—†ìŠµë‹ˆë‹¤." +msgstr "ìš”ì²­ëœ %X/%X 시작 위치(타임ë¼ì¸ %u)ê°€ ì´ ì„œë²„ ë‚´ì—­ì— ì—†ìŠµë‹ˆë‹¤." #: replication/walsender.c:603 #, c-format @@ -16485,47 +16581,47 @@ msgid "" "server %X/%X" msgstr "" -#: replication/walsender.c:974 +#: replication/walsender.c:972 #, c-format msgid "terminating walsender process after promotion" msgstr "ìš´ì˜ì „환 ë’¤ wal 송신기 프로세스를 중지합니다." -#: replication/walsender.c:1300 +#: replication/walsender.c:1298 #, c-format msgid "received replication command: %s" msgstr "ìˆ˜ì‹ ëœ ë³µì œ 명령: %s" -#: replication/walsender.c:1391 replication/walsender.c:1407 +#: replication/walsender.c:1397 replication/walsender.c:1413 #, c-format msgid "unexpected EOF on standby connection" msgstr "대기 서버 ì—°ê²°ì—서 예ìƒì¹˜ 못한 EOF 발견함" -#: replication/walsender.c:1421 +#: replication/walsender.c:1427 #, c-format msgid "unexpected standby message type \"%c\", after receiving CopyDone" msgstr "" -#: replication/walsender.c:1459 +#: replication/walsender.c:1465 #, c-format msgid "invalid standby message type \"%c\"" msgstr "ìž˜ëª»ëœ ëŒ€ê¸° 서버 메시지 형태 \"%c\"" -#: replication/walsender.c:1500 +#: replication/walsender.c:1506 #, c-format msgid "unexpected message type \"%c\"" msgstr "예ìƒì¹˜ 못한 메시지 형태: \"%c\"" -#: replication/walsender.c:1784 +#: replication/walsender.c:1790 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "복제 시간 제한으로 wal 송신기 프로세스를 종료합니다." -#: replication/walsender.c:1877 +#: replication/walsender.c:1875 #, c-format msgid "standby \"%s\" has now caught up with primary" msgstr "\"%s\" 대기 서버가 ìš´ì˜ ì„œë²„ë¡œ 전환합니다" -#: replication/walsender.c:1980 +#: replication/walsender.c:1978 #, c-format msgid "" "number of requested standby connections exceeds max_wal_senders (currently " @@ -16629,14 +16725,14 @@ msgstr "\"%s\" í…Œì´ë¸”ì„ ìƒì† 받는 í…Œì´ë¸”ì´ ìžˆì–´ 뷰로 변활할 #, c-format msgid "" "could not convert table \"%s\" to a view because it has row security enabled" -msgstr "로우단위 보안 ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ê³  있어 \"%s\" í…Œì´ë¸”ì„ ë·°ë¡œ 변환할 수 없습니다" +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\" í…Œì´ë¸”ì„ ë·°ë¡œ 변환할 수 없습니다" +msgstr "로우단위 보안 ì„¤ì •ì´ ë˜ì–´ 있어 \"%s\" í…Œì´ë¸”ì„ ë·°ë¡œ 변환할 수 없습니다" #: rewrite/rewriteDefine.c:492 #, c-format @@ -16672,7 +16768,8 @@ msgstr "ë·°ì—서 ì‚­ì œëœ ì—´ì„ í¬í•¨í•˜ê³  있는 릴레ì´ì…˜ì„ 변환할 #, c-format msgid "" "cannot create a RETURNING list for a relation containing dropped columns" -msgstr "릴레ì´ì…˜ì— ì‚­ì œëœ ì—´ì„ í¬í•¨í•˜ê³  있는 RETURNING 목ë¡ì„ 만들 수 없습니다." +msgstr "" +"릴레ì´ì…˜ì— ì‚­ì œëœ ì—´ì„ í¬í•¨í•˜ê³  있는 RETURNING 목ë¡ì„ 만들 수 없습니다." #: rewrite/rewriteDefine.c:702 #, c-format @@ -17002,7 +17099,8 @@ msgstr "ì´ ë¬¸ì œëŠ” 커ë„ì˜ ë¬¸ì œë¡œ 알려졌습니다. ì‹œìŠ¤í…œì„ ì—… #: storage/buffer/bufmgr.c:907 #, c-format msgid "invalid page in block %u of relation %s; zeroing out page" -msgstr "%u 블ë¡(해당 릴레ì´ì…˜: %s)ì— ìž˜ëª»ëœ íŽ˜ì´ì§€ í—¤ë”ê°€ 있ìŒ, 페ì´ì§€ë¥¼ 삭제하는 중" +msgstr "" +"%u 블ë¡(해당 릴레ì´ì…˜: %s)ì— ìž˜ëª»ëœ íŽ˜ì´ì§€ í—¤ë”ê°€ 있ìŒ, 페ì´ì§€ë¥¼ 삭제하는 중" #: storage/buffer/bufmgr.c:3952 #, c-format @@ -17034,32 +17132,32 @@ 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 "dirty ìžë£Œë¥¼ flush í•  수 ì—†ìŒ: %m" -#: storage/file/fd.c:466 +#: storage/file/fd.c:473 #, c-format msgid "could not determine dirty data size: %m" msgstr "dirty ìžë£Œ í¬ê¸°ë¥¼ 확ì¸í•  수 ì—†ìŒ: %m" -#: storage/file/fd.c:518 +#: storage/file/fd.c:525 #, c-format msgid "could not munmap() while flushing data: %m" msgstr "ìžë£Œ flush 작업 ë„중 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 "" @@ -17067,45 +17165,45 @@ 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 (%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 "" -#: storage/file/fd.c:2067 +#: storage/file/fd.c:2144 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\"" msgstr "" -#: storage/file/fd.c:2218 +#: storage/file/fd.c:2295 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" msgstr "" -#: storage/file/fd.c:2304 +#: storage/file/fd.c:2381 #, c-format msgid "could not read directory \"%s\": %m" msgstr "\"%s\" 디렉터리를 ì½ì„ 수 ì—†ìŒ: %m" @@ -17187,17 +17285,17 @@ msgstr "\"%s\" 공유 메모리 ì¡°ê°ì„ 만들 수 ì—†ìŒ: %m" msgid "could not duplicate handle for \"%s\": %m" msgstr "\"%s\" ìš© 헨들러를 ì´ì¤‘í™” í•  수 ì—†ìŒ: %m" -#: storage/ipc/latch.c:775 +#: storage/ipc/latch.c:778 #, c-format msgid "epoll_ctl() failed: %m" msgstr "epoll_ctl() 실패: %m" -#: storage/ipc/latch.c:999 +#: storage/ipc/latch.c:1002 #, c-format msgid "epoll_wait() failed: %m" msgstr "epoll_wait() 실패: %m" -#: storage/ipc/latch.c:1119 +#: storage/ipc/latch.c:1122 #, c-format msgid "poll() failed: %m" msgstr "poll() 실패: %m" @@ -17216,8 +17314,7 @@ msgstr "공유 메모리 부족" #, c-format msgid "" "not enough shared memory for data structure \"%s\" (%zu bytes requested)" -msgstr "" -"\"%s\" ìžë£Œ 구조체용 공유 메모리가 부족함 (%zu ë°”ì´íŠ¸ê°€ 필요함)" +msgstr "\"%s\" ìžë£Œ 구조체용 공유 메모리가 부족함 (%zu ë°”ì´íŠ¸ê°€ 필요함)" #: storage/ipc/shmem.c:389 #, c-format @@ -17237,12 +17334,12 @@ 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:2976 #, 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:2263 #, c-format msgid "User transaction caused buffer deadlock with recovery." msgstr "복구 작업 중 ì‚¬ìš©ìž íŠ¸ëžœìž­ì…˜ì´ ë²„í¼ ë°ë“œë½ì„ 만들었습니다." @@ -17327,7 +17424,8 @@ 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\")ì˜ ì œì™¸ 제약 ì¡°ê±´ì„ ê²€ì‚¬í•˜ëŠ” ì¤‘ì— ë°œìƒ" +msgstr "" +"%u,%u 튜플(해당 릴레ì´ì…˜: \"%s\")ì˜ ì œì™¸ 제약 ì¡°ê±´ì„ ê²€ì‚¬í•˜ëŠ” ì¤‘ì— ë°œìƒ" #: storage/lmgr/lmgr.c:960 #, c-format @@ -17470,13 +17568,13 @@ msgstr "" msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE" msgstr "" -#: 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 "" -#: 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 "%u 소스 íŠ¸ëžœìž­ì…˜ì€ ë”ì´ìƒ 실행 중ì´ì§€ 않습니다." @@ -17495,8 +17593,7 @@ msgstr "max_pred_locks_per_transaction ê°’ì„ ëŠ˜ë ¤ì•¼ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. #, c-format msgid "" "could not serialize access due to read/write dependencies among transactions" -msgstr "" -"트랜잭션간 ì½ê¸°/쓰기 ì˜ì¡´ì„± ë•Œë¬¸ì— serialize ì ‘ê·¼ì„ í•  수 ì—†ìŒ" +msgstr "트랜잭션간 ì½ê¸°/쓰기 ì˜ì¡´ì„± ë•Œë¬¸ì— serialize ì ‘ê·¼ì„ í•  수 ì—†ìŒ" #: storage/lmgr/predicate.c:3893 storage/lmgr/predicate.c:3982 #: storage/lmgr/predicate.c:3990 storage/lmgr/predicate.c:4029 @@ -17507,49 +17604,47 @@ msgstr "" 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 "%d PID 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 "%d 프로세스로 시스템신호(signal)를 보낼 수 없습니다: %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 "" -"%d PID 프로세스는 %s(%s)ì— ëŒ€í•´ êµì°© ìƒíƒœê°€ ë°œìƒí•˜ì§€ 않ë„ë¡ " -"%ld.%03dms í›„ì— ëŒ€ê¸°ì—´ 순서를 다시 조정함" +"%d PID 프로세스는 %s(%s)ì— ëŒ€í•´ êµì°© ìƒíƒœê°€ ë°œìƒí•˜ì§€ 않ë„ë¡ %ld.%03dms í›„ì— " +"대기열 순서를 다시 조정함" -#: 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 "" -"%d PID 프로세스ì—서 %s(%s) 대기중 %ld.%03dms í›„ì— êµì°© ìƒíƒœë¥¼ " -"ê°ì§€í•¨" +msgstr "%d PID 프로세스ì—서 %s(%s) 대기중 %ld.%03dms í›„ì— êµì°© ìƒíƒœë¥¼ ê°ì§€í•¨" -#: 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 PID 프로세스ì—서 여전히 %s(%s) ìž‘ì—…ì„ ê¸°ë‹¤ë¦¬ê³  있ìŒ(%ld.%03dms 후)" -#: 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 PID 프로세스가 %s(%s) ìž‘ì—…ì„ ìœ„í•´ 잠금 ì·¨ë“함(%ld.%03dms 후)" -#: 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 "프로세스 %dì—서 %s(%s)ì„(를) ì·¨ë“하지 못함(%ld.%03dms 후)" @@ -17662,8 +17757,7 @@ msgstr "요청 íê°€ ê°€ë“ì°¨ forward fsync ìš”ì²­ì„ ì²˜ë¦¬í•  수 ì—†ìŒ" msgid "" "could not open file \"%s\" (target block %u): previous segment is only %u " "blocks" -msgstr "" -"\"%s\" 파ì¼ì„ 열기 실패(ëŒ€ìƒ ë¸”ë¡: %u): ì´ì „ ì¡°ê°ì€ %u 블럭 ë¿ìž„" +msgstr "\"%s\" 파ì¼ì„ 열기 실패(ëŒ€ìƒ ë¸”ë¡: %u): ì´ì „ ì¡°ê°ì€ %u 블럭 ë¿ìž„" #: storage/smgr/md.c:1877 #, c-format @@ -17723,7 +17817,7 @@ 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:4308 +#: tcop/postgres.c:473 tcop/postgres.c:4314 #, c-format msgid "invalid frontend message type %d" msgstr "ìž˜ëª»ëœ frontend 메시지 형태 %d" @@ -17983,27 +18077,27 @@ msgstr "%s: ìž˜ëª»ëœ ëª…ë ¹í–‰ ì¸ìž: %s" msgid "%s: no database nor user name specified" msgstr "%s: ë°ì´í„°ë² ì´ìŠ¤ì™€ 사용ìžë¥¼ 지정하지 않았습니다" -#: tcop/postgres.c:4216 +#: tcop/postgres.c:4222 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "ìž˜ëª»ëœ CLOSE 메시지 서브타입 %d" -#: tcop/postgres.c:4251 +#: tcop/postgres.c:4257 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "ìž˜ëª»ëœ DESCRIBE 메시지 서브타입 %d" -#: tcop/postgres.c:4329 +#: tcop/postgres.c:4335 #, c-format msgid "fastpath function calls not supported in a replication connection" msgstr "복제 ì—°ê²°ì—서는 fastpath 함수 í˜¸ì¶œì„ ì§€ì›í•˜ì§€ 않습니다" -#: tcop/postgres.c:4333 +#: tcop/postgres.c:4339 #, c-format msgid "extended query protocol not supported in a replication connection" msgstr "" -#: tcop/postgres.c:4503 +#: tcop/postgres.c:4509 #, c-format msgid "" "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s" @@ -18137,8 +18231,7 @@ msgstr "기준어 í•­ëª©ì— ë„ˆë¬´ ë§Žì€ ì–´íœ˜ì†Œê°€ 있ìŒ" #, c-format msgid "" "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" -msgstr "" -"\"%s\" 기준 단어는 하위 사전ì—서 ì¸ì‹í•  수 ì—†ìŒ(규칙 %d)" +msgstr "\"%s\" 기준 단어는 하위 사전ì—서 ì¸ì‹í•  수 ì—†ìŒ(규칙 %d)" #: tsearch/dict_thesaurus.c:426 #, c-format @@ -18159,8 +18252,7 @@ msgstr "\"%s\" ë™ì˜ì–´ 사전 대체 단어는 중지 단어임(규칙 %d)" #, c-format msgid "" "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" -msgstr "" -"\"%s\" ë™ì˜ì–´ 사전 대체 단어는 하위 사전ì—서 ì¸ì‹í•  수 ì—†ìŒ(규칙 %d)" +msgstr "\"%s\" ë™ì˜ì–´ 사전 대체 단어는 하위 사전ì—서 ì¸ì‹í•  수 ì—†ìŒ(규칙 %d)" #: tsearch/dict_thesaurus.c:594 #, c-format @@ -18214,7 +18306,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:14401 gram.y:14418 +#: tsearch/spell.c:1005 tsearch/spell.c:1070 gram.y:14405 gram.y:14422 #, c-format msgid "syntax error" msgstr "구문 오류" @@ -18247,7 +18339,7 @@ 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:1132 +#: utils/adt/tsvector_op.c:1133 #, c-format msgid "string is too long for tsvector (%d bytes, max %d bytes)" msgstr "" @@ -18429,27 +18521,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 @@ -18463,53 +18555,53 @@ msgstr "ìž…ë ¥ ìžë£Œí˜•ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤." 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 "ì¸ìžëŠ” 비어있거나 1ì°¨ì› ë°°ì—´ì´ì–´ì•¼ 합니다." -#: 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ê°’ì´ ì•„ë‹ˆì—¬ì•¼ 함" @@ -18634,7 +18726,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 @@ -18656,8 +18748,7 @@ msgstr "ê³ ì • ê¸¸ì´ ë°°ì—´ì˜ ìš”ì†Œì— null ê°’ì„ ì§€ì •í•  수 ì—†ìŒ" #: utils/adt/arrayfuncs.c:2795 #, c-format msgid "updates on slices of fixed-length arrays not implemented" -msgstr "" -"ê³ ì •ëœ í¬ê¸°ì˜ ë°°ì—´ì˜ ì¡°ê°ì„ ì—…ë°ì´íЏ 하는 ê¸°ëŠ¥ì€ êµ¬í˜„ë˜ì§€ 않았습니다." +msgstr "ê³ ì •ëœ í¬ê¸°ì˜ ë°°ì—´ì˜ ì¡°ê°ì„ ì—…ë°ì´íЏ 하는 ê¸°ëŠ¥ì€ êµ¬í˜„ë˜ì§€ 않았습니다." #: utils/adt/arrayfuncs.c:2826 #, c-format @@ -18717,42 +18808,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 "threshold ê°’ì€ 1ì°¨ì› ë°°ì—´ì´ì–´ì•¼ 합니다." -#: utils/adt/arrayfuncs.c:6318 +#: utils/adt/arrayfuncs.c:6306 #, c-format msgid "thresholds array must not contain NULLs" msgstr "threshold ë°°ì—´ì—는 nullì´ í¬í•¨ë˜ì§€ 않아야 함" @@ -18796,7 +18877,7 @@ msgstr "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:3499 #, c-format msgid "division by zero" msgstr "0으로는 나눌수 없습니다." @@ -18868,25 +18949,25 @@ msgstr "날짜가 타임스탬프 범위를 벗어남" #: 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/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" @@ -18930,17 +19011,18 @@ 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:5275 -#: utils/adt/timestamp.c:5514 +#: 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:5351 utils/adt/timestamp.c:5545 +#: 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)ì„ í¬í•¨í•  수 없습니다" +"\"%s\" 시간대 간격(interval time zone) 값으로 달(month) ë˜ëŠ” ì¼(day)ì„ í¬í•¨" +"í•  수 없습니다" #: utils/adt/datetime.c:3878 utils/adt/datetime.c:3885 #, c-format @@ -19004,9 +19086,10 @@ 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\"입니다." +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 ìžë£Œí˜•ì€ ë„ë©”ì¸ì´ 아닙니다" @@ -19297,8 +19380,7 @@ msgstr "í•„ë“œì— %dìžê°€ í•„ìš”í•œë° %dìžë§Œ 남았습니다." #, c-format msgid "" "If your source string is not fixed-width, try using the \"FM\" modifier." -msgstr "" -"소스 문ìžì—´ì´ ê³ ì • 너비가 아닌 경우 \"FM\" 한정ìžë¥¼ 사용해 보십시오." +msgstr "소스 문ìžì—´ì´ ê³ ì • 너비가 아닌 경우 \"FM\" 한정ìžë¥¼ 사용해 보십시오." #: utils/adt/formatting.c:2210 utils/adt/formatting.c:2223 #: utils/adt/formatting.c:2353 @@ -19515,7 +19597,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:5561 utils/adt/timestamp.c:5642 #, c-format msgid "step size cannot equal zero" msgstr "단계 í¬ê¸°ëŠ” 0ì¼ ìˆ˜ ì—†ìŒ" @@ -19598,8 +19680,8 @@ msgid "" "Unicode escape values cannot be used for code point values above 007F when " "the server encoding is not UTF8." msgstr "" -"서버 ì¸ì½”ë”©ì´ UTF8ì´ ì•„ë‹Œ 경우 007F보다 í° ì½”ë“œ ì§€ì  ê°’ì—는 유니코드 ì´" -"스케ì´í”„ ê°’ì„ ì‚¬ìš©í•  수 ì—†ìŒ" +"서버 ì¸ì½”ë”©ì´ UTF8ì´ ì•„ë‹Œ 경우 007F보다 í° ì½”ë“œ ì§€ì  ê°’ì—는 유니코드 ì´ìŠ¤ì¼€ì´" +"프 ê°’ì„ ì‚¬ìš©í•  수 ì—†ìŒ" #: utils/adt/json.c:944 utils/adt/json.c:962 #, c-format @@ -19664,7 +19746,8 @@ 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 í˜•ì€ ì‚¬ìš©í•  수 ì—†ìŒ" +msgstr "" +"키 ê°’ì€ ìŠ¤ì¹¼ë¼ í˜•ì´ì–´ì•¼ 함. ë°°ì—´, 복합 ìžë£Œí˜•, json í˜•ì€ ì‚¬ìš©í•  수 ì—†ìŒ" #: utils/adt/json.c:2006 #, c-format @@ -19734,8 +19817,7 @@ msgstr "jsonb 문ìžì—´ë¡œ 길ì´ë¥¼ 초과함" #, c-format msgid "" "Due to an implementation restriction, jsonb strings cannot exceed %d bytes." -msgstr "" -"êµ¬í˜„ìƒ ì œí•œìœ¼ë¡œ jsonb 문ìžì—´ì€ %d ë°”ì´íŠ¸ë¥¼ ë„˜ì„ ìˆ˜ 없습니다." +msgstr "êµ¬í˜„ìƒ ì œí•œìœ¼ë¡œ jsonb 문ìžì—´ì€ %d ë°”ì´íŠ¸ë¥¼ ë„˜ì„ ìˆ˜ 없습니다." #: utils/adt/jsonb.c:1182 #, c-format @@ -19847,8 +19929,7 @@ msgstr "%sì˜ ì²«ë²ˆì§¸ ì¸ìžëŠ” row 형ì´ì–´ì•¼ 합니다" #, c-format msgid "" "Try calling the function in the FROM clause using a column definition list." -msgstr "" -"함수를 호출 í•  때 FROM ì ˆì—서 칼럼 ì •ì˜ ëª©ë¡ë„ 함께 지정해야 합니다." +msgstr "함수를 호출 í•  때 FROM ì ˆì—서 칼럼 ì •ì˜ ëª©ë¡ë„ 함께 지정해야 합니다." #: utils/adt/jsonfuncs.c:2819 utils/adt/jsonfuncs.c:2986 #, c-format @@ -19961,7 +20042,8 @@ msgid "" "must be a member of the role whose query is being canceled or member of " "pg_signal_backend" msgstr "" -"쿼리 작업 취소하려면 작업ìžì˜ ì†Œì† ë§´ë²„ì´ê±°ë‚˜ pg_signal_backend ì†Œì† ë§´ë²„ì—¬ì•¼ 합니다" +"쿼리 작업 취소하려면 작업ìžì˜ ì†Œì† ë§´ë²„ì´ê±°ë‚˜ pg_signal_backend ì†Œì† ë§´ë²„ì—¬" +"야 합니다" #: utils/adt/misc.c:314 #, c-format @@ -19974,7 +20056,8 @@ msgid "" "must be a member of the role whose process is being terminated or member of " "pg_signal_backend" msgstr "" -"ì„¸ì…˜ì„ ì¢…ë£Œí•˜ë ¤ë©´ ì ‘ì†ìžì˜ ì†Œì† ë§´ë²„ì´ê±°ë‚˜ pg_signal_backend ì†Œì† ë§´ë²„ì—¬ì•¼ 합니다" +"ì„¸ì…˜ì„ ì¢…ë£Œí•˜ë ¤ë©´ ì ‘ì†ìžì˜ ì†Œì† ë§´ë²„ì´ê±°ë‚˜ pg_signal_backend ì†Œì† ë§´ë²„ì—¬ì•¼ í•©" +"니다" #: utils/adt/misc.c:336 #, c-format @@ -20221,8 +20304,8 @@ msgid "" "A field with precision %d, scale %d must round to an absolute value less " "than %s%d." msgstr "" -"ì „ì²´ ìžë¦¿ìˆ˜ %d, 소수 ìžë¦¿ìˆ˜ %dì˜ í•„ë“œëŠ” %s%d보다 ìž‘ì€ ì ˆëŒ€ 값으로 " -"반올림해야 합니다." +"ì „ì²´ ìžë¦¿ìˆ˜ %d, 소수 ìžë¦¿ìˆ˜ %dì˜ í•„ë“œëŠ” %s%d보다 ìž‘ì€ ì ˆëŒ€ 값으로 반올림해야 " +"합니다." #: utils/adt/numeric.c:6254 utils/adt/numeric.c:6280 #, c-format @@ -20285,25 +20368,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 "OS ë¼ì´ë¸ŒëŸ¬ë¦¬ 패키지를 ì—…ë°ì´íЏ 하세요." -#: 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\" ë¡œì¼€ì¼ ì´ë¦„ì— ëŒ€í•œ ë¡œì¼€ì¼ íŒŒì¼ì„ ì°¾ì„ ìˆ˜ 없습니다." +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 " @@ -20312,17 +20394,18 @@ msgstr "" "ì´ í”Œëž«í¼ì—서는 서로 다른 정렬규칙(collation)ê³¼ 문ìžì§‘í•©(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 "ì´ í”Œëž«í¼ì—서는 ê¸°ë³¸ê°’ì´ ì•„ë‹Œ 정렬규칙(collation)ì„ ì‚¬ìš©í•  수 없습니다." +msgstr "" +"ì´ í”Œëž«í¼ì—서는 ê¸°ë³¸ê°’ì´ ì•„ë‹Œ 정렬규칙(collation)ì„ ì‚¬ìš©í•  수 없습니다." -#: 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 " @@ -20591,7 +20674,7 @@ 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/ruleutils.c:8367 utils/adt/ruleutils.c:8536 #, c-format msgid "too many arguments" msgstr "ì¸ìžê°€ 너무 많습니다" @@ -20678,8 +20761,8 @@ msgid "" "Remove this referential integrity trigger and its mates, then do ALTER TABLE " "ADD CONSTRAINT." msgstr "" -"해당 트리거 관련 ê°ì²´ë¥¼ 제거한 후 ALTER TABLE ADD " -"CONSTRAINT 명령으로 추가하세요" +"해당 트리거 관련 ê°ì²´ë¥¼ 제거한 후 ALTER TABLE ADD CONSTRAINT 명령으로 추가하" +"세요" #: utils/adt/ri_triggers.c:3225 #, c-format @@ -20782,7 +20865,7 @@ msgstr "서로 다른 ì—´ í˜•ì‹ %sê³¼(와) %s(레코드 ì—´ %d)ì„(를) ë¹„êµ msgid "cannot compare record types with different numbers of columns" msgstr "칼럼 수가 서로 다른 레코드 ìžë£Œí˜•ì„ ë¹„êµí•  수 ì—†ìŒ" -#: utils/adt/ruleutils.c:4286 +#: utils/adt/ruleutils.c:4289 #, c-format msgid "rule \"%s\" has unsupported event type %d" msgstr "\"%s\" ë£°ì€ %d ì´ë²¤íЏ 형태를 ì§€ì›í•˜ì§€ 않습니다" @@ -20818,7 +20901,7 @@ msgid "timestamp out of range: \"%s\"" msgstr "타임스탬프 ê°’ì´ ë²”ìœ„ë¥¼ 벗어났ìŒ: \"%s\"" #: utils/adt/timestamp.c:188 utils/adt/timestamp.c:463 -#: utils/adt/timestamp.c:993 +#: utils/adt/timestamp.c:990 #, c-format msgid "date/time value \"%s\" is no longer supported" msgstr "ë‚ ì§œ/시간 ê°’ \"%s\"ì€(는) ë” ì´ìƒ ì§€ì›ë˜ì§€ 않ìŒ" @@ -20854,87 +20937,86 @@ msgstr "\"%s\" 숫ìží˜• 타임 ì¡´ 범위 벗어남" msgid "timestamp out of range: %d-%02d-%02d %d:%02d:%02g" msgstr "타임스탬프 ê°’ì´ ë²”ìœ„ë¥¼ 벗어났ìŒ: %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:772 utils/adt/timestamp.c:788 #, c-format msgid "timestamp out of range: \"%g\"" msgstr "타임스탬프 ê°’ì´ ë²”ìœ„ë¥¼ 벗어났ìŒ: \"%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: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:1128 utils/adt/timestamp.c:1161 +#: utils/adt/timestamp.c:1125 utils/adt/timestamp.c:1158 #, c-format msgid "invalid INTERVAL type modifier" msgstr "ìž˜ëª»ëœ INTERVAL í˜•ì‹ í•œì •ìž" -#: utils/adt/timestamp.c:1144 +#: utils/adt/timestamp.c:1141 #, c-format msgid "INTERVAL(%d) precision must not be negative" msgstr "INTERVAL(%d) ì •ë°€ë„로 ìŒìˆ˜ê°’ì´ ì˜¬ 수 없습니다" -#: utils/adt/timestamp.c:1150 +#: utils/adt/timestamp.c:1147 #, c-format msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" msgstr "INTERVAL(%d) ì •ë°€ë„는 허용 최대치(%d)로 ê°ì†Œ ë˜ì—ˆìŠµë‹ˆë‹¤" -#: utils/adt/timestamp.c:1502 +#: 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:2797 +#: utils/adt/timestamp.c:2850 #, c-format msgid "cannot subtract infinite timestamps" msgstr "타임스탬프 ë¬´í•œê°’ì„ ì¶”ì¶œ í•  수 ì—†ìŒ" -#: utils/adt/timestamp.c:4006 utils/adt/timestamp.c:4531 -#: utils/adt/timestamp.c:4715 utils/adt/timestamp.c:4740 +#: 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:4020 utils/adt/timestamp.c:4485 -#: utils/adt/timestamp.c:4750 +#: 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:4160 utils/adt/timestamp.c:4526 -#: utils/adt/timestamp.c:4937 utils/adt/timestamp.c:4963 +#: 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:4177 utils/adt/timestamp.c:4480 -#: utils/adt/timestamp.c:4972 +#: 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:4258 +#: utils/adt/timestamp.c:4311 #, c-format msgid "" "interval units \"%s\" not supported because months usually have fractional " "weeks" msgstr "" -#: utils/adt/timestamp.c:4264 utils/adt/timestamp.c:5078 +#: 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:4280 utils/adt/timestamp.c:5105 +#: utils/adt/timestamp.c:4333 utils/adt/timestamp.c:5158 #, c-format msgid "interval units \"%s\" not recognized" msgstr "\"%s\" 유닛 간격(interval units)ì„ ì²˜ë¦¬í•˜ì§€ 못했습니다" @@ -20995,31 +21077,31 @@ 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, " "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:292 +#: utils/adt/tsquery_rewrite.c:321 #, c-format msgid "ts_rewrite query must return two tsquery columns" msgstr "ts_rewrite 쿼리는 ë‘ ê°œì˜ tsquery ì—´ì„ ë°˜í™˜í•´ì•¼ 함" @@ -21055,58 +21137,58 @@ 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\" ì¹¼ëŸ¼ì€ ë¬¸ìží˜•ì´ ì•„ë‹˜" @@ -21278,7 +21360,8 @@ 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부터 시작합니다" +msgstr "" +"format 함수ì—서 사용할 수 있는 ì¸ìž 위치 번호는 0ì´ ì•„ë‹ˆë¼, 1부터 시작합니다" #: utils/adt/varlena.c:5187 #, c-format @@ -21360,8 +21443,7 @@ msgstr "XML ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 초기화할 수 ì—†ìŒ" msgid "" "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." msgstr "" -"libxml2ì— í˜¸í™˜ë˜ì§€ 않는 ë¬¸ìž ìžë£Œí˜• 있ìŒ: sizeof(char)=%u, " -"sizeof(xmlChar)=%u" +"libxml2ì— í˜¸í™˜ë˜ì§€ 않는 ë¬¸ìž ìžë£Œí˜• 있ìŒ: sizeof(char)=%u, sizeof(xmlChar)=%u" #: utils/adt/xml.c:997 #, c-format @@ -21374,7 +21456,8 @@ 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 í—¤ë” íŒŒì¼ì´ í˜¸í™˜ì„±ì´ ì—†ëŠ” 것 같습니다." +"ì´ ë¬¸ì œëŠ” PostgreSQL 서버를 만들 때 사용한 libxml2 í—¤ë” íŒŒì¼ì´ í˜¸í™˜ì„±ì´ ì—†ëŠ” " +"것 같습니다." #: utils/adt/xml.c:1735 msgid "Invalid character value." @@ -21429,7 +21512,8 @@ msgstr "XML 네임스페ì´ìФ ë§¤í•‘ì— ì‚¬ìš©í•  ë°°ì—´ì´ ìž˜ëª»ë¨" #, c-format msgid "" "The array must be two-dimensional with length of the second axis equal to 2." -msgstr "ì´ ë°°ì—´ì€ key, value로 êµ¬ì„±ëœ ë°°ì—´ì„ ìš”ì†Œë¡œ 하는 2ì°¨ì› ë°°ì—´ì´ì–´ì•¼ 합니다." +msgstr "" +"ì´ ë°°ì—´ì€ key, value로 êµ¬ì„±ëœ ë°°ì—´ì„ ìš”ì†Œë¡œ 하는 2ì°¨ì› ë°°ì—´ì´ì–´ì•¼ 합니다." #: utils/adt/xml.c:3818 #, c-format @@ -21464,22 +21548,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" @@ -21563,82 +21647,82 @@ msgstr "표준출력(stdout)으로 사용하기 위해 \"%s\" 파ì¼ì„ 여는 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 "ì†ìƒ" @@ -21749,7 +21833,9 @@ 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" +msgstr "" +"%u OID 언어 유효성 검사 함수가 %u OID 프로시져 언어용으로 호출ë˜ì—ˆìŒ, ì›ëž˜ ì–¸" +"어는 %u" #: utils/fmgr/funcapi.c:353 #, c-format @@ -21778,7 +21864,7 @@ msgstr "레코드를 리턴하는 함수를 위한 í–‰(row) 구성 정보를 구 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 "보안 제한 작업 ë‚´ì—서 \"%s\" 매개 변수를 설정할 수 ì—†ìŒ" @@ -21882,8 +21968,8 @@ 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\" 파ì¼ì„ 지우십시오." +"확실하게 공유 메모리를 사용하는 다른 프로세스가 없다고 íŒë‹¨ë˜ë©´, 공유 메모리 " +"ì˜ì—­ì„ 삭제하거나 \"%s\" 파ì¼ì„ 지우십시오." #: utils/init/miscinit.c:984 #, c-format @@ -21906,7 +21992,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:8820 +#: 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" @@ -21961,8 +22047,7 @@ msgid "" "replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=" "%s, compression=%s)" msgstr "" -"복제 ì—°ê²° ì¸ì¦: 사용ìž=%s SSL 활성화 (프로토콜=%s, 알고리즘=" -"%s, ì••ì¶•=%s)" +"복제 ì—°ê²° ì¸ì¦: 사용ìž=%s SSL 활성화 (프로토콜=%s, 알고리즘=%s, ì••ì¶•=%s)" #: utils/init/postinit.c:253 utils/init/postinit.c:267 msgid "off" @@ -21983,8 +22068,8 @@ msgid "" "connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=" "%s, compression=%s)" msgstr "" -"ì—°ê²° ì¸ì¦: 사용ìž=%s ë°ì´í„°ë² ì´ìФ=%s SSL 활성화 (프로토콜=%s, 알고리즘=" -"%s, ì••ì¶•=%s)" +"ì—°ê²° ì¸ì¦: 사용ìž=%s ë°ì´í„°ë² ì´ìФ=%s SSL 활성화 (프로토콜=%s, 알고리즘=%s, ì••" +"ì¶•=%s)" #: utils/init/postinit.c:271 #, c-format @@ -22032,8 +22117,8 @@ msgid "" "The database was initialized with LC_COLLATE \"%s\", which is not " "recognized by setlocale()." msgstr "" -"ë°ì´í„°ë² ì´ìŠ¤ê°€ setlocale()ì—서 ì¸ì‹í•  수 없는 LC_COLLATE \"%s\"(으)로 " -"초기화ë˜ì—ˆìŠµë‹ˆë‹¤." +"ë°ì´í„°ë² ì´ìŠ¤ê°€ setlocale()ì—서 ì¸ì‹í•  수 없는 LC_COLLATE \"%s\"(으)로 초기화" +"ë˜ì—ˆìŠµë‹ˆë‹¤." #: utils/init/postinit.c:381 utils/init/postinit.c:388 #, c-format @@ -22048,8 +22133,8 @@ msgid "" "The database was initialized with LC_CTYPE \"%s\", which is not recognized " "by setlocale()." msgstr "" -"setlocale()ì—서 ì¸ì‹í•  수 없는 \"%s\" LC_CTYPE 값으로 " -"ë°ì´í„°ë² ì´ìŠ¤ê°€ 초기화ë˜ì—ˆìŠµë‹ˆë‹¤." +"setlocale()ì—서 ì¸ì‹í•  수 없는 \"%s\" LC_CTYPE 값으로 ë°ì´í„°ë² ì´ìŠ¤ê°€ 초기화ë˜" +"었습니다." #: utils/init/postinit.c:714 #, c-format @@ -22086,7 +22171,9 @@ msgstr "ë‚¨ì€ ì—°ê²° ìŠ¬ë¡¯ì€ non-replication 슈í¼ìœ ì € 연결용으로 남 #: utils/init/postinit.c:789 #, c-format msgid "must be superuser or replication role to start walsender" -msgstr "superuser ë˜ëŠ” replication ê¶Œí•œì„ ê°€ì§„ 롤만 walsender 프로세스를 시작할 수 있ìŒ" +msgstr "" +"superuser ë˜ëŠ” replication ê¶Œí•œì„ ê°€ì§„ 롤만 walsender 프로세스를 시작할 수 있" +"ìŒ" #: utils/init/postinit.c:858 #, c-format @@ -22177,7 +22264,9 @@ msgstr "\"%s\" ì¸ì½”딩ì—서 사용할 수 없는 문ìžê°€ 있ìŒ: %s" msgid "" "character with byte sequence %s in encoding \"%s\" has no equivalent in " "encoding \"%s\"" -msgstr "%s ë°”ì´íŠ¸ë¡œ ì¡°í•©ëœ ë¬¸ìž(ì¸ì½”딩: \"%s\")와 대ì‘ë˜ëŠ” ë¬¸ìž ì½”ë“œê°€ \"%s\" ì¸ì½”딩ì—는 없습니다" +msgstr "" +"%s ë°”ì´íŠ¸ë¡œ ì¡°í•©ëœ ë¬¸ìž(ì¸ì½”딩: \"%s\")와 대ì‘ë˜ëŠ” ë¬¸ìž ì½”ë“œê°€ \"%s\" ì¸ì½”딩" +"ì—는 없습니다" #: utils/misc/guc.c:548 msgid "Ungrouped" @@ -22478,11 +22567,11 @@ msgid "" "problems. Only has an effect if checksums are enabled." msgstr "" "ì¼ë°˜ì ìœ¼ë¡œ ì†ìƒëœ 페ì´ì§€ í—¤ë”를 발견하게 ë˜ë©´, PostgreSQLì—서는 오류를 ë°œìƒí•˜" -"ê³ , 현재 íŠ¸ëžœìž­ì…˜ì„ ì¤‘ì§€í•©ë‹ˆë‹¤. ignore_checksum_failure ê°’ì„ true로 지정하면, " -"ì´ëŸ° ì†ìƒëœ 페ì´ì§€ë¥¼ 발견하면, 경고 메시지를 보여주고, ê³„ì† ì§„í–‰í•©ë‹ˆë‹¤. " -"ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•œë‹¤ í•¨ì€ ì„œë²„ ë¹„ì •ìƒ ì¢…ë£Œë‚˜ 기타 심ê°í•œ 문제가 ì¼ì–´ ë‚  수 " -"있습니다. ì´ ì„¤ì •ì€ ë°ì´í„° í´ëŸ¬ìŠ¤í„°ì—서 ì²´í¬ì„¬ ê¸°ëŠ¥ì´ í™œì„±í™” ë˜ì–´ 있는 " -"경우ì—ë§Œ ì˜í–¥ì„ 받습니다." +"ê³ , 현재 íŠ¸ëžœìž­ì…˜ì„ ì¤‘ì§€í•©ë‹ˆë‹¤. ignore_checksum_failure ê°’ì„ true로 지정하" +"ë©´, ì´ëŸ° ì†ìƒëœ 페ì´ì§€ë¥¼ 발견하면, 경고 메시지를 보여주고, ê³„ì† ì§„í–‰í•©ë‹ˆë‹¤. " +"ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•œë‹¤ í•¨ì€ ì„œë²„ ë¹„ì •ìƒ ì¢…ë£Œë‚˜ 기타 심ê°í•œ 문제가 ì¼ì–´ ë‚  수 있습" +"니다. ì´ ì„¤ì •ì€ ë°ì´í„° í´ëŸ¬ìŠ¤í„°ì—서 ì²´í¬ì„¬ ê¸°ëŠ¥ì´ í™œì„±í™” ë˜ì–´ 있는 경우ì—ë§Œ " +"ì˜í–¥ì„ 받습니다." #: utils/misc/guc.c:967 msgid "Continues processing past damaged page headers." @@ -22513,18 +22602,18 @@ msgid "" "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ì— ì”니다." +"ìš´ì˜ ì²´ì œê°€ ë¹„ì •ìƒ ì¢…ë£Œë˜ëŠ” 경우 처리 ì¤‘ì¸ íŽ˜ì´ì§€ 쓰기는 디스í¬ì— ì¼ë¶€ë§Œ 기ë¡" +"ë  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 복구 중 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ì— ë³€ê²½ëœ ë‚´ìš©ë§Œ 기ë¡" -"하는 ê²ƒì´ ì•„ë‹ˆë¼, 해당 페ì´ì§€ 전체를 기ë¡í•©ë‹ˆë‹¤." +"ì²´í¬í¬ì¸íЏ 작업 후 ìžë£Œ 페ì´ì§€ì— 첫 ë³€ê²½ì´ ìžˆëŠ” 경우, WALì— ë³€ê²½ëœ ë‚´ìš©ë§Œ 기" +"ë¡í•˜ëŠ” ê²ƒì´ ì•„ë‹ˆë¼, 해당 페ì´ì§€ 전체를 기ë¡í•©ë‹ˆë‹¤." #: utils/misc/guc.c:1005 msgid "Compresses full-page writes written in WAL file." @@ -22598,8 +22687,7 @@ msgstr "ëˆ„ì  ì„±ëŠ¥ 통계를 서버 ë¡œê·¸ì— ê¸°ë¡í•¨." msgid "" "Logs system resource usage statistics (memory and CPU) on various B-tree " "operations." -msgstr "" -"다양한 B트리 ìž‘ì—…ì— ìžì›(메모리, CPU) 사용 통계를 기ë¡ì— 남기" +msgstr "다양한 B트리 ìž‘ì—…ì— ìžì›(메모리, CPU) 사용 통계를 기ë¡ì— 남기" #: utils/misc/guc.c:1179 msgid "Collects information about executing commands." @@ -22630,8 +22718,7 @@ msgid "" "Enables updating of the process title every time a new SQL command is " "received by the server." msgstr "" -"서버가 새 SQL ëª…ë ¹ì„ ë°›ì„ ë•Œë§ˆë‹¤ 프로세스 ì œëª©ì´ ì—…ë°ì´íŠ¸ë  ìˆ˜ 있ë„" -"ë¡ í•©ë‹ˆë‹¤." +"서버가 새 SQL ëª…ë ¹ì„ ë°›ì„ ë•Œë§ˆë‹¤ 프로세스 ì œëª©ì´ ì—…ë°ì´íŠ¸ë  ìˆ˜ 있ë„ë¡ í•©ë‹ˆë‹¤." #: utils/misc/guc.c:1223 msgid "Starts the autovacuum subprocess." @@ -22656,8 +22743,7 @@ msgstr "가벼운 잠금 사용 정보를 로그로 남김" #: utils/misc/guc.c:1275 msgid "" "Dumps information about all current locks when a deadlock timeout occurs." -msgstr "" -"êµì°© 잠금 시간 제한 ìƒí™©ì´ ë°œìƒí•˜ë©´ ê·¸ ë•Œì˜ ëª¨ë“  잠금 정보를 보여줌" +msgstr "êµì°© 잠금 시간 제한 ìƒí™©ì´ ë°œìƒí•˜ë©´ ê·¸ ë•Œì˜ ëª¨ë“  잠금 정보를 보여줌" #: utils/misc/guc.c:1287 msgid "Logs long lock waits." @@ -22733,8 +22819,8 @@ 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." @@ -22769,7 +22855,8 @@ msgstr "기본ì ìœ¼ë¡œ OID를 사용하여 새 í…Œì´ë¸”ì„ ë§Œë“­ë‹ˆë‹¤." msgid "" "Start a subprocess to capture stderr output and/or csvlogs into log files." msgstr "" -"로그 ê¸°ë¡ í•˜ìœ„ 프로세스를 시작하여 stderr 출력 ë°/ë˜ëŠ” csvlog를 로그 파ì¼ì— ì”니다." +"로그 ê¸°ë¡ í•˜ìœ„ 프로세스를 시작하여 stderr 출력 ë°/ë˜ëŠ” csvlog를 로그 파ì¼ì— " +"ì”니다." #: utils/misc/guc.c:1436 msgid "Truncate existing log files of same name during log rotation." @@ -22800,8 +22887,8 @@ 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." @@ -22823,7 +22910,8 @@ msgstr "복구 중ì—ì„œë„ ì ‘ì†ê³¼ 쿼리 ì‚¬ìš©ì„ í—ˆìš©í•¨" msgid "" "Allows feedback from a hot standby to the primary that will avoid query " "conflicts." -msgstr "ì½ê¸° ì „ìš© ë³´ì¡° 서버가 보내는 쿼리 ì¶©ëŒì„ 피하기 위한 í”¼ë“œë°±ì„ ì£¼ 서버가 ë°›ìŒ" +msgstr "" +"ì½ê¸° ì „ìš© ë³´ì¡° 서버가 보내는 쿼리 ì¶©ëŒì„ 피하기 위한 í”¼ë“œë°±ì„ ì£¼ 서버가 ë°›ìŒ" #: utils/misc/guc.c:1577 msgid "Allows modifications of the structure of system tables." @@ -22838,8 +22926,8 @@ 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 "" @@ -22851,8 +22939,8 @@ msgid "" "Skips privilege checks when reading or modifying large objects, for " "compatibility with PostgreSQL releases prior to 9.0." msgstr "" -"PostgreSQL 9.0 ì´ì „ ë²„ì „ì˜ í˜¸í™˜ì„±ì„ ìœ„í•´ 대형 ê°ì²´ì— 대한 ì½ê¸°, 변경 시 " -"ì ‘ê·¼ 권한 검사를 안 하ë„ë¡ ì„¤ì •í•¨" +"PostgreSQL 9.0 ì´ì „ ë²„ì „ì˜ í˜¸í™˜ì„±ì„ ìœ„í•´ 대형 ê°ì²´ì— 대한 ì½ê¸°, 변경 시 ì ‘ê·¼ " +"권한 검사를 안 하ë„ë¡ ì„¤ì •í•¨" #: utils/misc/guc.c:1611 msgid "" @@ -22912,8 +23000,8 @@ msgid "" "The planner will merge subqueries into upper queries if the resulting FROM " "list would have no more than this many items." msgstr "" -"ê²°ê³¼ FROM 목ë¡ì— í¬í•¨ëœ í•­ëª©ì´ ì´ ê°œìˆ˜ë¥¼ 넘지 않는 경우 ê³„íš ê´€ë¦¬ìž" -"ê°€ 하위 쿼리를 ìƒìœ„ ì¿¼ë¦¬ì— ë³‘í•©í•©ë‹ˆë‹¤." +"ê²°ê³¼ FROM 목ë¡ì— í¬í•¨ëœ í•­ëª©ì´ ì´ ê°œìˆ˜ë¥¼ 넘지 않는 경우 ê³„íš ê´€ë¦¬ìžê°€ 하" +"위 쿼리를 ìƒìœ„ ì¿¼ë¦¬ì— ë³‘í•©í•©ë‹ˆë‹¤." #: utils/misc/guc.c:1714 msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." @@ -22925,8 +23013,8 @@ 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 항목 목ë¡ì— 결합합니다." +"ê²°ê³¼ 목ë¡ì— í¬í•¨ëœ í•­ëª©ì´ ì´ ê°œìˆ˜ë¥¼ 넘지 ì•Šì„ ë•Œë§ˆë‹¤ ê³„íš ê´€ë¦¬ìžê°€ 명시" +"ì  JOIN êµ¬ë¬¸ì„ FROM 항목 목ë¡ì— 결합합니다." #: utils/misc/guc.c:1726 msgid "Sets the threshold of FROM items beyond which GEQO is used." @@ -22958,7 +23046,8 @@ msgid "" "Sets the maximum delay before canceling queries when a hot standby server is " "processing archived WAL data." msgstr "" -"ì½ê¸° ì „ìš© ë³´ì¡° 서버가 ì•„ì¹´ì´ë¸Œëœ WAL ìžë£Œë¥¼ 처리할 때, ì§€ì—°ë  ìˆ˜ 있는 최대 시간" +"ì½ê¸° ì „ìš© ë³´ì¡° 서버가 ì•„ì¹´ì´ë¸Œëœ WAL ìžë£Œë¥¼ 처리할 때, ì§€ì—°ë  ìˆ˜ 있는 최대 시" +"ê°„" #: utils/misc/guc.c:1786 msgid "" @@ -22974,7 +23063,8 @@ msgstr "주 서버로 WAL 수신기 ìƒíƒœë¥¼ 보고하는 최대 간격" #: utils/misc/guc.c:1808 msgid "Sets the maximum wait time to receive data from the primary." -msgstr "주 서버ì—서 보낸 ìžë£Œë¥¼ 받기위해 기다릴 수 있는 최대 허용 ì‹œê°„ì„ ì„¤ì •í•©ë‹ˆë‹¤." +msgstr "" +"주 서버ì—서 보낸 ìžë£Œë¥¼ 받기위해 기다릴 수 있는 최대 허용 ì‹œê°„ì„ ì„¤ì •í•©ë‹ˆë‹¤." #: utils/misc/guc.c:1819 msgid "Sets the maximum number of concurrent connections." @@ -23007,10 +23097,9 @@ msgid "" "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으로 " -"시작해야 합니다.)" +"Unix ë„ë©”ì¸ ì†Œì¼“ì€ ì¼ë°˜ì ì¸ Unix íŒŒì¼ ì‹œìŠ¤í…œ 권한 ì§‘í•©ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. 매개 ë³€" +"수 ê°’ì€ chmod ë° umask 시스템 호출ì—서 수ë½ë˜ëŠ” í˜•íƒœì˜ ìˆ«ìž ëª¨ë“œ 지정ì´ì–´ì•¼ " +"합니다. (ì¼ë°˜ì ì¸ 8진수 형ì‹ì„ 사용하려면 숫ìžê°€ 0으로 시작해야 합니다.)" #: utils/misc/guc.c:1890 msgid "Sets the file permissions for log files." @@ -23022,9 +23111,9 @@ msgid "" "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으로 " -"시작해야 합니다.)" +"매개 변수 ê°’ì€ chmod ë° umask 시스템 호출ì—서 수ë½ë˜ëŠ” í˜•íƒœì˜ ìˆ«ìž ëª¨ë“œ 지정" +"ì´ì–´ì•¼ 합니다. (ì¼ë°˜ì ì¸ 8진수 형ì‹ì„ 사용하려면 숫ìžê°€ 0으로 시작해야 합니" +"다.)" #: utils/misc/guc.c:1904 msgid "Sets the maximum memory to be used for query workspaces." @@ -23035,8 +23124,8 @@ 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." @@ -23049,14 +23138,12 @@ 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 ê¸°ëŠ¥ì„ ì´ìš©í•  최대 튜플 수" +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 단위) ìµœëŒ€ê°’ì„ ì§€ì •í•©ë‹ˆë‹¤." @@ -23150,7 +23237,8 @@ msgstr "VACUUMì—서 í…Œì´ë¸” MultiXactId ë™ê²°í•  ë•Œê¹Œì§€ì˜ ìµœì†Œ 기간 #: utils/misc/guc.c:2146 msgid "Multixact age at which VACUUM should scan whole table to freeze tuples." msgstr "" -"VACUUMì—서 íŠœí”Œì„ ë™ê²°í•˜ê¸° 위해 ì „ì²´ í…Œì´ë¸”ì„ ìŠ¤ìº”í•  ë•Œê¹Œì§€ì˜ ë©€í‹°íŠ¸ëžœìž­ì…˜ 기간입니다." +"VACUUMì—서 íŠœí”Œì„ ë™ê²°í•˜ê¸° 위해 ì „ì²´ í…Œì´ë¸”ì„ ìŠ¤ìº”í•  ë•Œê¹Œì§€ì˜ ë©€í‹°íŠ¸ëžœìž­ì…˜ 기" +"간입니다." #: utils/misc/guc.c:2156 msgid "" @@ -23169,8 +23257,8 @@ msgid "" "locked at any one time." msgstr "" "공유 잠금 í…Œì´ë¸”ì€ í•œ ë²ˆì— ìž ê¶ˆì•¼ í•  고유 ê°ì²´ 수가 " -"max_locks_per_transaction * max_connections를 넘지 않는다는 가정 í•˜ì— " -"í¬ê¸°ê°€ 지정ë©ë‹ˆë‹¤." +"max_locks_per_transaction * max_connections를 넘지 않는다는 가정 í•˜ì— í¬ê¸°ê°€ " +"지정ë©ë‹ˆë‹¤." #: utils/misc/guc.c:2181 msgid "Sets the maximum number of predicate locks per transaction." @@ -23183,8 +23271,8 @@ msgid "" "to be locked at any one time." msgstr "" "공유 predicate 잠금 í…Œì´ë¸”ì€ í•œ ë²ˆì— ìž ê¶ˆì•¼ í•  고유 ê°ì²´ 수가 " -"max_pred_locks_per_transaction * max_connections를 넘지 않는다는 가정 í•˜ì— " -"í¬ê¸°ê°€ 지정ë©ë‹ˆë‹¤." +"max_pred_locks_per_transaction * max_connections를 넘지 않는다는 가정 í•˜ì— í¬" +"기가 지정ë©ë‹ˆë‹¤." #: utils/misc/guc.c:2193 msgid "Sets the maximum allowed time to complete client authentication." @@ -23213,8 +23301,7 @@ msgstr "ìžë™ WAL ì²´í¬í¬ì¸íЏ 사ì´ì˜ 최대 ê°„ê²©ì„ ì„¤ì •í•©ë‹ˆë‹¤." #: utils/misc/guc.c:2259 msgid "" "Enables warnings if checkpoint segments are filled more frequently than this." -msgstr "" -"지정 시간 ì•ˆì— ì²´í¬í¬ì¸íЏ ì¡°ê°ì´ ëª¨ë‘ ì±„ì›Œì§€ë©´ 경고를 냄" +msgstr "지정 시간 ì•ˆì— ì²´í¬í¬ì¸íЏ ì¡°ê°ì´ ëª¨ë‘ ì±„ì›Œì§€ë©´ 경고를 냄" #: utils/misc/guc.c:2261 msgid "" @@ -23226,54 +23313,53 @@ msgstr "" "ìš©ì´ ê½‰ 차는 사태가 ë°œìƒí•˜ë©´ 경고 메시지를 서버 ë¡œê·¸ì— ë‚¨ê¹ë‹ˆë‹¤. ì´ ê°’ì„ 0으" "로 지정하면 ì´ ê¸°ëŠ¥ ì—†ìŒ" -#: 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 기ë¡ìžê°€ 지정 시간 ë§Œí¼ ì‰¬ê³  쓰기 ìž‘ì—…ì„ ë°˜ë³µí•¨" -#: 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 "" -#: 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." msgstr "" "트랜잭션과 트랜잭션 ë¡œê·¸ì˜ ì ìš© 사ì´ì˜ ê°„ê²©ì„ microsecond 단위로 지정함" -#: 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 " @@ -23282,570 +23368,573 @@ msgstr "" "ì´ ê°’ì€ real, duoble ë¶€ë™ ì†Œìˆ«ì ê³¼ 지리정보 ìžë£Œí˜•ì— ì˜í–¥ì„ ë¼ì¹©ë‹ˆë‹¤. ì´ ê°’" "ì€ ì •ìˆ˜ì—¬ì•¼í•©ë‹ˆë‹¤(FLT_DIG or DBL_DIG as appropriate - 무슨 ë§ì¸ì§€)." -#: utils/misc/guc.c:2386 +#: utils/misc/guc.c:2385 msgid "Sets the minimum execution time above which statements will be logged." -msgstr "ì´ ì‹œê°„ì„ ì´ˆê³¼í•  경우 ì¿¼ë¦¬ë¬¸ì„ ë¡œê·¸ë¡œ 남길 최소 실행 ì‹œê°„ì„ ì„¤ì •í•©ë‹ˆë‹¤." +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." 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." 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 ë°°ì—´ì˜ ê²½ìš° ì´ ê°’ì€ ëŒ€ëžµ ë°°ì—´ì˜ ë“œë¼ì´ë¸Œ 스핀들 수입니다." +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 "미리 쓰기 ë¡œê·¸ì˜ ë¸”ë¡ í¬ê¸°ë¥¼ 표시합니다." -#: 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 "" -#: utils/misc/guc.c:2582 +#: utils/misc/guc.c:2580 msgid "Shows the number of pages per write ahead log segment." msgstr "미리 쓰기 로그 세그먼트당 페ì´ì§€ 수를 표시합니다." -#: 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 겹침 방지를 위해 í…Œì´ë¸”ì— ëŒ€í•´ autovacuum ìž‘ì—…ì„ ìˆ˜í–‰í•  í…Œì´ë¸” 나ì´ë¥¼ 지정합니다." +"트랜잭션 ID 겹침 방지를 위해 í…Œì´ë¸”ì— ëŒ€í•´ autovacuum ìž‘ì—…ì„ ìˆ˜í–‰í•  í…Œì´ë¸” 나" +"ì´ë¥¼ 지정합니다." -#: utils/misc/guc.c:2635 +#: utils/misc/guc.c:2633 msgid "" "Multixact age at which to autovacuum a table to prevent multixact wraparound." msgstr "" -"멀티 트랜잭션 ID 겹침 방지를 위해 í…Œì´ë¸”ì— ëŒ€í•´ autovacuum ìž‘ì—…ì„ ìˆ˜í–‰í•  트랜잭션 나ì´ë¥¼ 지정합니다." +"멀티 트랜잭션 ID 겹침 방지를 위해 í…Œì´ë¸”ì— ëŒ€í•´ autovacuum ìž‘ì—…ì„ ìˆ˜í–‰í•  트랜" +"ìž­ì…˜ 나ì´ë¥¼ 지정합니다." -#: utils/misc/guc.c:2645 +#: utils/misc/guc.c:2643 msgid "" "Sets the maximum number of simultaneously running autovacuum worker " "processes." msgstr "ë™ì‹œì— 작업할 수 있는 autovacuum ìž‘ì—…ìž ìµœëŒ€ 수 지정" -#: 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 "ê° autovacuum ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ê°€ 사용할 메모리 최대치" -#: 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 "" -#: 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 ì—°ê²° 유지 실행 간격입니다." -#: 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 "ì´ ê°’ì´ 0ì´ë©´ 시스템 기본 ê°’" -#: utils/misc/guc.c:2698 +#: utils/misc/guc.c:2696 msgid "Time between TCP keepalive retransmits." msgstr "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 "" -#: utils/misc/guc.c:2720 +#: utils/misc/guc.c:2718 msgid "Maximum number of TCP keepalive retransmits." msgstr "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 "" -"ì´ ê°’ì€ ì—°ê²°ì´ ì¤‘ë‹¨ëœ ê²ƒìœ¼ë¡œ 간주ë˜ê¸° ì „ì— ì†ì‹¤ë  수 있는 ì—°ì† ì—°" -"ê²° 유지 재전송 수를 제어합니다. ê°’ 0ì„ ì§€ì •í•˜ë©´ 시스템 기본 ê°’ì´ ì‚¬ìš©ë©" -"니다." +"ì´ ê°’ì€ ì—°ê²°ì´ ì¤‘ë‹¨ëœ ê²ƒìœ¼ë¡œ 간주ë˜ê¸° ì „ì— ì†ì‹¤ë  수 있는 ì—°ì† ì—°ê²° 유" +"ì§€ 재전송 수를 제어합니다. ê°’ 0ì„ ì§€ì •í•˜ë©´ 시스템 기본 ê°’ì´ ì‚¬ìš©ë©ë‹ˆë‹¤." -#: 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 " "kB each." msgstr "" -"즉, PostgreSQL ë°ì´í„° 파ì¼ì— ì‚¬ìš©ë  ì»¤ë„ì˜ ë””ìŠ¤í¬ ìºì‹œ 부분입니다. " -"ì´ ê°’ì€ ë””ìŠ¤í¬ íŽ˜ì´ì§€ 단위로 측정ë˜ë©°, ì¼ë°˜ì ìœ¼ë¡œ ê°ê° 8KB입니다." +"즉, PostgreSQL ë°ì´í„° 파ì¼ì— ì‚¬ìš©ë  ì»¤ë„ì˜ ë””ìŠ¤í¬ ìºì‹œ 부분입니다. ì´ ê°’" +"ì€ ë””ìŠ¤í¬ íŽ˜ì´ì§€ 단위로 측정ë˜ë©°, ì¼ë°˜ì ìœ¼ë¡œ ê°ê° 8KB입니다." -#: 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 ì¸ë±ìŠ¤ë¥¼ 위한 팬딩(pending) 목ë¡ì˜ 최대 í¬ê¸° 지정" -#: 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." 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." 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." 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." 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." 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 "" -"ê²€ìƒ‰ë  ì»¤ì„œ í–‰ì— ëŒ€í•œ ê³„íš ê´€ë¦¬ìžì˜ ì˜ˆìƒ ë¶„ìˆ˜ ê°’ì„ ì„¤ì •í•©ë‹ˆë‹¤." +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." msgstr "" -"vacuum ìž‘ì—…ì„ ì§„í–‰í•  update, delete ìž‘ì—…ëŸ‰ì„ ì „ì²´ ìžë£Œì— 대한 분수값으로 지정합니다." +"vacuum ìž‘ì—…ì„ ì§„í–‰í•  update, delete ìž‘ì—…ëŸ‰ì„ ì „ì²´ ìžë£Œì— 대한 분수값으로 지정" +"합니다." -#: 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 "" -"통계 수집 ìž‘ì—…ì„ ì§„í–‰í•  insert, update, delete ìž‘ì—…ëŸ‰ì„ ì „ì²´ ìžë£Œì— 대한 분수값으로 지정합니다." +"통계 수집 ìž‘ì—…ì„ ì§„í–‰í•  insert, update, delete ìž‘ì—…ëŸ‰ì„ ì „ì²´ ìžë£Œì— 대한 분수" +"값으로 지정합니다." -#: utils/misc/guc.c:2967 +#: utils/misc/guc.c:2965 msgid "" "Time spent flushing dirty buffers during checkpoint, as fraction of " "checkpoint interval." 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 " "slash), the system will search this path for the specified file." 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 "ê°ê°ì˜ ë°±ì—”ë“œì— ë¯¸ë¦¬ 불러올 접근제한 없는 공유 ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤ì„ 지정합니다" +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." msgstr "" -"유효한 ê°’ì€ í”Œëž«í¼ì— ë”°ë¼ \"stderr\", \"syslog\", \"csvlog\" ë° " -"\"eventlog\"ì˜ ì¡°í•©ìž…ë‹ˆë‹¤." +"유효한 ê°’ì€ í”Œëž«í¼ì— ë”°ë¼ \"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 "syslogì—서 구분할 PostgreSQL ë©”ì‹œì§€ì— ì‚¬ìš©ë  í”„ë¡œê·¸ëž¨ ì´ë¦„ì„ ì§€ì •." -#: 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 "ì´ë²¤íЏ 로그ì—서 PostgreSQL 메시지 ì‹ë³„ìžë¡œ 사용할 ì‘용프로그램 ì´ë¦„ 지정" +msgstr "" +"ì´ë²¤íЏ 로그ì—서 PostgreSQL 메시지 ì‹ë³„ìžë¡œ 사용할 ì‘용프로그램 ì´ë¦„ 지정" -#: utils/misc/guc.c:3308 +#: utils/misc/guc.c:3306 msgid "Sets the time zone for displaying and interpreting time stamps." msgstr "시간대(time zone)를 지정함." -#: 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 "현재 트랜잭션 ë…립성 수준(isolation level)ì„ ì§€ì •í•¨." -#: utils/misc/guc.c:3339 +#: utils/misc/guc.c:3337 msgid "Sets the owning group of the Unix-domain socket." msgstr "유닉스 ë„ë©”ì¸ ì†Œì¼“ì˜ ì†Œìœ ì£¼ë¥¼ 지정" -#: 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 "유닉스 ë„ë©”ì¸ ì†Œì¼“ì„ ë§Œë“¤ 디렉터리를 지정합니다." -#: 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 PIDê°€ 기ë¡ëœ 파ì¼ì˜ 경로를 지정합니다." -#: utils/misc/guc.c:3435 +#: utils/misc/guc.c:3433 msgid "Location of the SSL server certificate file." msgstr "서버 ì¸ì¦ì„œ íŒŒì¼ ìœ„ì¹˜ë¥¼ 지정함" -#: 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 "" -#: 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ì— ì‚¬ìš©í•  curve 설정" -#: 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." @@ -23853,118 +23942,120 @@ 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." 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 "오류가 있는 모든 쿼리문ì´ë‚˜ 지정한 로그 레벨 ì´ìƒì˜ ì¿¼ë¦¬ë¬¸ì„ ë¡œê·¸ë¡œ 남김" +msgstr "" +"오류가 있는 모든 쿼리문ì´ë‚˜ 지정한 로그 레벨 ì´ìƒì˜ ì¿¼ë¦¬ë¬¸ì„ ë¡œê·¸ë¡œ 남김" -#: 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 ê¸°ëŠ¥ì„ ì‚¬ìš©í•  때, 사용할 syslog \"facility\" ê°’ì„ ì§€ì •." -#: 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 "현재 트랜잭션 격리 수준(isolation level)ì„ ì§€ì •í•¨." -#: utils/misc/guc.c:3708 +#: utils/misc/guc.c:3706 msgid "Allows archiving of WAL files using archive_command." msgstr "archive_command를 사용하여 WAL 파ì¼ì„ 따로 보관하ë„ë¡ ì„¤ì •í•©ë‹ˆë‹¤." -#: 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." msgstr "" -"ì•”ì‹œì  êµ¬ë¬¸ ë¶„ì„ ë° ì§ë ¬í™” ìž‘ì—…ì˜ XML ë°ì´í„°ë¥¼ 문서 ë˜ëŠ” ë‚´ìš© ì¡°ê°ìœ¼ë¡œ " -"간주할지 여부를 설정합니다." +"ì•”ì‹œì  êµ¬ë¬¸ ë¶„ì„ ë° ì§ë ¬í™” ìž‘ì—…ì˜ XML ë°ì´í„°ë¥¼ 문서 ë˜ëŠ” ë‚´ìš© ì¡°ê°ìœ¼ë¡œ 간주할" +"ì§€ 여부를 설정합니다." -#: utils/misc/guc.c:3795 +#: utils/misc/guc.c:3793 msgid "Use of huge pages on Linux." msgstr "리눅스 huge 페ì´ì§€ 사용 여부" -#: 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." 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" msgstr "" -"initdb 명령ì´ë‚˜, pg_basebackup 명령으로 PostgreSQL ë°ì´í„° 디렉토리를 초기화 하세요.\n" +"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" @@ -23976,12 +24067,12 @@ msgstr "" "PGDATA ì´ë¦„ì˜ í™˜ê²½ 변수를 만들고 ê·¸ 값으로 해당 디렉터리를 지정한 ë’¤,\n" "ì´ í”„ë¡œê·¸ëž¨ì„ ë‹¤ì‹œ 실행해 보십시오.\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" @@ -23994,7 +24085,7 @@ msgstr "" "PGDATA ì´ë¦„ì˜ í™˜ê²½ 변수를 만들고 ê·¸ 값으로 해당 디렉터리를 지정한 ë’¤,\n" "ì´ í”„ë¡œê·¸ëž¨ì„ ë‹¤ì‹œ 실행해 보십시오.\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" @@ -24007,7 +24098,7 @@ msgstr "" "PGDATA ì´ë¦„ì˜ í™˜ê²½ 변수를 만들고 ê·¸ 값으로 해당 디렉터리를 지정한 ë’¤,\n" "ì´ í”„ë¡œê·¸ëž¨ì„ ë‹¤ì‹œ 실행해 보십시오.\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" @@ -24020,150 +24111,151 @@ msgstr "" "PGDATA ì´ë¦„ì˜ í™˜ê²½ 변수를 만들고 ê·¸ 값으로 해당 디렉터리를 지정한 ë’¤,\n" "ì´ í”„ë¡œê·¸ëž¨ì„ ë‹¤ì‹œ 실행해 보십시오.\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:9617 +#: 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 -#: 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 +#: guc-file.l:351 #, 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:9633 +#: 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\" 검사를 위해서는 superuser여야합니다" -#: 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 명령으로 지정하는 매개 변수 ê°’ì—는 줄바꿈 문ìžê°€ 없어야 합니다" +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:9250 +#: utils/misc/guc.c:9258 #, c-format msgid "parameter \"%s\" could not be set" msgstr "\"%s\" 매개 변수는 설정할 수 ì—†ìŒ" -#: utils/misc/guc.c:9337 +#: utils/misc/guc.c:9345 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "지정한 \"%s\" 매개 ë³€ìˆ˜ê°’ì˜ êµ¬ë¬¸ë¶„ì„ì„ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." -#: utils/misc/guc.c:9695 utils/misc/guc.c:9729 +#: 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:9763 +#: utils/misc/guc.c:9771 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "ìž˜ëª»ëœ \"%s\" 매개 ë³€ìˆ˜ì˜ ê°’: %g" -#: utils/misc/guc.c:9953 +#: 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\" " -"ì„¤ì •ì„ ë³€ê²½í•  수 있습니다." +"해당 세션ì—서 ì–´ë–¤ 임시 í…Œì´ë¸”ë„ ì‚¬ìš©í•˜ê³  있지 않아야 \"temp_buffers\" 설정" +"ì„ ë³€ê²½í•  수 있습니다." -#: utils/misc/guc.c:9965 +#: utils/misc/guc.c:9973 #, c-format msgid "Bonjour is not supported by this build" msgstr "Bonjour ê¸°ëŠ¥ì„ ëº€ 채로 서버가 만들어졌습니다." -#: utils/misc/guc.c:9978 +#: utils/misc/guc.c:9986 #, c-format msgid "SSL is not supported by this build" msgstr "SSL ì ‘ì† ê¸°ëŠ¥ì„ ëº€ 채로 서버가 만들어졌습니다." -#: utils/misc/guc.c:9990 +#: 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:10002 +#: utils/misc/guc.c:10010 #, c-format msgid "" "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", " @@ -24194,8 +24286,8 @@ 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 ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”" +"í…Œì´ë¸” 소유주를 위해 ì •ì±…ì„ ë¹„í™œì„±í•˜ë ¤ë©´, ALTER TABLE NO FORCE ROW LEVEL " +"SECURITY ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”" #: utils/misc/timeout.c:388 #, c-format @@ -24208,15 +24300,15 @@ msgid "" "time zone abbreviation \"%s\" is too long (maximum %d characters) in time " "zone file \"%s\", line %d" msgstr "" -"\"%s\" 타임 ì¡´ ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤(최대 %dìž) (\"%s\" 타임 " -"ì¡´ 파ì¼ì˜ %d번째 ì¤„ì— ìžˆìŒ)." +"\"%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" -"번째 ì¤„ì— ìžˆìŒ)." +"%d 타임 ì¡´ 오프셋 ê°’ì´ ë²”ìœ„ë¥¼ 벗어났습니다(\"%s\" 타임 ì¡´ 파ì¼ì˜ %d번째 ì¤„ì— " +"있ìŒ)." #: utils/misc/tzparser.c:112 #, c-format @@ -24250,8 +24342,8 @@ msgid "" "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s" "\", line %d." msgstr "" -"\"%s\" 타임 ì¡´ 파ì¼ì˜ %d번째 ì¤„ì— ìžˆëŠ” í•­ëª©ì´ \"%s\" 파ì¼ì˜ %d" -"번째 ì¤„ì— ìžˆëŠ” 항목과 ì¶©ëŒí•©ë‹ˆë‹¤." +"\"%s\" 타임 ì¡´ 파ì¼ì˜ %d번째 ì¤„ì— ìžˆëŠ” í•­ëª©ì´ \"%s\" 파ì¼ì˜ %d번째 ì¤„ì— ìžˆëŠ” " +"항목과 ì¶©ëŒí•©ë‹ˆë‹¤." #: utils/misc/tzparser.c:301 #, c-format @@ -24362,52 +24454,54 @@ msgstr "tuplestore 임시 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" msgid "could not write to tuplestore temporary file: %m" msgstr "tuplestore 임시 파ì¼ì„ 쓸 수 없습니다: %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 SNAPSHOP ëª…ë ¹ì„ í˜¸ì¶œí•´ì•¼ 함" -#: 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 "" -"스냅샷 가져오기 íŠ¸ëžœìž­ì…˜ì€ ê·¸ 격리 ìˆ˜ì¤€ì´ SERIALIZABLE ë˜ëŠ” REPEATABLE READ 여야 함" +"스냅샷 가져오기 íŠ¸ëžœìž­ì…˜ì€ ê·¸ 격리 ìˆ˜ì¤€ì´ 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 " "transaction" 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 " @@ -24415,7 +24509,7 @@ msgid "" msgstr "" "ì½ê¸°-쓰기 ì§ë ¬í™”ëœ íŠ¸ëžœìž­ì…˜ì´ ì½ê¸° ì „ìš© íŠ¸ëžœìž­ì…˜ì˜ ìŠ¤ëƒ…ìƒ·ì„ ê°€ì ¸ì˜¬ 수 ì—†ìŒ" -#: utils/time/snapmgr.c:1494 +#: utils/time/snapmgr.c:1546 #, c-format msgid "cannot import a snapshot from a different database" msgstr "서로 다른 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 대ìƒìœ¼ë¡œëŠ” ìŠ¤ëƒ…ìƒ·ì„ ê°€ì ¸ì˜¬ 수 ì—†ìŒ" @@ -24428,7 +24522,8 @@ 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 구문ì—서는 스키마 ìš”ì†Œë“¤ì„ í¬í•¨í•  수 없습니다." +msgstr "" +"CREATE SCHEMA IF NOT EXISTS 구문ì—서는 스키마 ìš”ì†Œë“¤ì„ í¬í•¨í•  수 없습니다." #: gram.y:1438 #, c-format @@ -24551,188 +24646,188 @@ msgstr "OVERLAPS ì‹ì˜ ì˜¤ë¥¸ìª½ì— ìžˆëŠ” 매개 변수 수가 잘못ë¨" msgid "UNIQUE predicate is not yet implemented" msgstr "UNIQUE 술어는 ì•„ì§ êµ¬í˜„ë˜ì§€ 못했습니다" -#: gram.y:12296 +#: gram.y:12300 #, c-format msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP" msgstr "WITHIN GROUP 구문 안ì—서 ì¤‘ë³µëœ ORDER BY êµ¬ë¬¸ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: gram.y:12301 +#: gram.y:12305 #, c-format msgid "cannot use DISTINCT with WITHIN GROUP" msgstr "DISTINCTê³¼ WITHIN GROUPì„ í•¨ê»˜ 쓸 수 없습니다" -#: gram.y:12306 +#: gram.y:12310 #, c-format msgid "cannot use VARIADIC with WITHIN GROUP" msgstr "VARIADICê³¼ WITHIN GROUPì„ í•¨ê»˜ 쓸 수 없습니다" -#: gram.y:12812 +#: gram.y:12816 #, c-format msgid "RANGE PRECEDING is only supported with UNBOUNDED" msgstr "RANGE PRECEDINGì€ UNBOUNDED와 함께 사용해야 합니다" -#: gram.y:12818 +#: gram.y:12822 #, c-format msgid "RANGE FOLLOWING is only supported with UNBOUNDED" msgstr "RANGE FOLLOWINGì€ UNBOUNDED와 함께 사용해야 합니다" -#: gram.y:12845 gram.y:12868 +#: gram.y:12849 gram.y:12872 #, c-format msgid "frame start cannot be UNBOUNDED FOLLOWING" msgstr "프레임 ì‹œìž‘ì€ UNBOUNDED FOLLOWINGì¼ ìˆ˜ ì—†ìŒ" -#: gram.y:12850 +#: gram.y:12854 #, c-format msgid "frame starting from following row cannot end with current row" msgstr "ë”°ë¼ì˜¤ëŠ” ë¡œìš°ì˜ í”„ë ˆìž„ ì‹œìž‘ì€ í˜„ìž¬ ë¡œìš°ì˜ ëì¼ ìˆ˜ 없습니다" -#: gram.y:12873 +#: gram.y:12877 #, c-format msgid "frame end cannot be UNBOUNDED PRECEDING" msgstr "프레임 ëì€ UNBOUNDED PRECEDINGì¼ ìˆ˜ ì—†ìŒ" -#: gram.y:12879 +#: gram.y:12883 #, c-format msgid "frame starting from current row cannot have preceding rows" msgstr "현재 ë¡œìš°ì˜ í”„ë ˆìž„ ì‹œìž‘ì€ ì„ í–‰í•˜ëŠ” 로우를 가질 수 없습니다" -#: gram.y:12886 +#: gram.y:12890 #, c-format msgid "frame starting from following row cannot have preceding rows" msgstr "ë”°ë¼ì˜¤ëŠ” ë¡œìš°ì˜ í”„ë ˆìž„ ì‹œìž‘ì€ ì„ í–‰í•˜ëŠ” 로우를 가질 수 없습니다" -#: gram.y:13551 +#: gram.y:13555 #, c-format msgid "type modifier cannot have parameter name" msgstr "ìžë£Œí˜• 한정ìžëŠ” 매개 변수 ì´ë¦„ì„ ì‚¬ìš©í•  수 ì—†ìŒ" -#: gram.y:13557 +#: gram.y:13561 #, c-format msgid "type modifier cannot have ORDER BY" msgstr "ìžë£Œí˜• 한정ìžëŠ” ORDER BY êµ¬ë¬¸ì„ ì‚¬ìš©í•  수 ì—†ìŒ" -#: gram.y:13621 gram.y:13627 +#: gram.y:13625 gram.y:13631 #, c-format msgid "%s cannot be used as a role name here" msgstr "%s ì´ë¦„ì€ ì—¬ê¸°ì„œ 롤 ì´ë¦„으로 사용할 수 ì—†ìŒ" -#: gram.y:14249 gram.y:14438 +#: gram.y:14253 gram.y:14442 msgid "improper use of \"*\"" msgstr "\"*\" ì‚¬ìš©ì´ ìž˜ëª»ë¨" -#: gram.y:14502 +#: 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:14539 +#: gram.y:14543 #, c-format msgid "multiple ORDER BY clauses not allowed" msgstr "ì¤‘ë³µëœ ORDER BY êµ¬ë¬¸ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: gram.y:14550 +#: gram.y:14554 #, c-format msgid "multiple OFFSET clauses not allowed" msgstr "ì¤‘ë³µëœ OFFSET êµ¬ë¬¸ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: gram.y:14559 +#: gram.y:14563 #, c-format msgid "multiple LIMIT clauses not allowed" msgstr "ì¤‘ë³µëœ LIMIT êµ¬ë¬¸ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: gram.y:14568 +#: gram.y:14572 #, c-format msgid "multiple WITH clauses not allowed" msgstr "ì¤‘ë³µëœ WITH ì ˆì€ í—ˆìš©í•˜ì§€ 않ìŒ" -#: gram.y:14760 +#: gram.y:14764 #, c-format msgid "OUT and INOUT arguments aren't allowed in TABLE functions" msgstr "OUT ë° INOUT ì¸ìžëŠ” TABLE í•¨ìˆ˜ì— ì‚¬ìš©í•  수 ì—†ìŒ" -#: gram.y:14861 +#: gram.y:14865 #, c-format msgid "multiple COLLATE clauses not allowed" msgstr "ì¤‘ë³µëœ COLLATE êµ¬ë¬¸ì€ í—ˆìš©í•˜ì§€ 않습니다" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14899 gram.y:14912 +#: 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:14925 +#: 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:14938 +#: gram.y:14942 #, c-format msgid "%s constraints cannot be marked NO INHERIT" msgstr "%s 제약조건ì—는 NO INHERIT ì˜µì…˜ì„ ì“¸ 수 ì—†ìŒ" -#: guc-file.l:313 +#: guc-file.l:314 #, c-format msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u" msgstr "알 수 없는 환경 매개 변수 ì´ë¦„: \"%s\", 해당 파ì¼: \"%s\", 줄번호: %u" -#: guc-file.l:386 +#: guc-file.l:387 #, c-format msgid "parameter \"%s\" removed from configuration file, reset to default" msgstr "환경설정 파ì¼ì— \"%s\" 매개 변수가 빠졌ìŒ, ì´ˆê¸°ê°’ì„ ì‚¬ìš©í•¨" -#: guc-file.l:452 +#: guc-file.l:453 #, c-format msgid "parameter \"%s\" changed to \"%s\"" -msgstr "\"%s\" 매개 변수 ê°’ì„ \"%s\"(으)로 바꿀 수 ì—†ìŒ" +msgstr "\"%s\" 매개 변수 ê°’ì„ \"%s\"(으)로 바꿨ìŒ" -#: guc-file.l:494 +#: guc-file.l:495 #, c-format msgid "configuration file \"%s\" contains errors" msgstr "\"%s\" 환경 설정파ì¼ì— 오류가 있ìŒ" -#: guc-file.l:499 +#: guc-file.l:500 #, c-format msgid "" "configuration file \"%s\" contains errors; unaffected changes were applied" msgstr "\"%s\" 환경 설정 파ì¼ì— 오류가 있어 새로 ë³€ê²½ë  ì„¤ì •ì´ ì—†ìŠµë‹ˆë‹¤" -#: guc-file.l:504 +#: guc-file.l:505 #, c-format msgid "configuration file \"%s\" contains errors; no changes were applied" msgstr "\"%s\" 환경 설정 파ì¼ì— 오류가 있어 아무 ì„¤ì •ë„ ë°˜ì˜ë˜ì§€ 않았습니다." -#: guc-file.l:577 +#: guc-file.l:578 #, c-format msgid "" "could not open configuration file \"%s\": maximum nesting depth exceeded" msgstr "설정 íŒŒì¼ \"%s\"ì„ ì—´ 수 없습니다: 최대 디렉터리 깊ì´ë¥¼ 초과했ìŒ" -#: guc-file.l:604 +#: guc-file.l:605 #, c-format msgid "skipping missing configuration file \"%s\"" msgstr "\"%s\" 환경 설정파ì¼ì´ 없으나 건너뜀" -#: guc-file.l:858 +#: guc-file.l:859 #, c-format msgid "syntax error in file \"%s\" line %u, near end of line" msgstr "\"%s\" íŒŒì¼ %u 줄 ë부분ì—서 구문 오류 있ìŒ" -#: guc-file.l:868 +#: guc-file.l:869 #, c-format msgid "syntax error in file \"%s\" line %u, near token \"%s\"" msgstr "\"%s\" íŒŒì¼ %u 줄ì—서 구문 오류 있ìŒ, \"%s\" í† í° ë¶€ê·¼" -#: guc-file.l:888 +#: guc-file.l:889 #, c-format msgid "too many syntax errors found, abandoning file \"%s\"" msgstr "구문 오류가 너무 많습니다. \"%s\" 파ì¼ì„ 무시합니다" -#: guc-file.l:940 +#: guc-file.l:941 #, c-format msgid "could not open configuration directory \"%s\": %m" msgstr "\"%s\" 환경 설정 디렉터리를 ì—´ 수 없습니다: %m" @@ -24779,15 +24874,15 @@ msgid "" "String constants with Unicode escapes cannot be used when " "standard_conforming_strings is off." msgstr "" -"standard_conforming_strings = off ì¸ ê²½ìš° 문ìžì—´ ìƒìˆ˜ 표기ì—서 " -"유니코드 ì´ìŠ¤ì¼€ì´í”„를 사용할 수 없습니다." +"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: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: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 "ìž˜ëª»ëœ ìœ ë‹ˆì½”ë“œ 대리 ìŒ" @@ -24832,57 +24927,56 @@ msgid "operator too long" msgstr "ì—°ì‚°ìžê°€ 너무 ê¹ë‹ˆë‹¤." #. translator: %s is typically the translation of "syntax error" -#: scan.l:1077 +#: 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:1085 +#: scan.l:1086 #, c-format msgid "%s at or near \"%s\"" msgstr "%s, \"%s\" 부근" -#: scan.l:1251 scan.l:1283 +#: 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보다 í° ì½”ë“œ ì§€ì  ê°’ì—는 유니코드 ì´" -"스케ì´í”„ ê°’ì„ ì‚¬ìš©í•  수 ì—†ìŒ" +"서버 ì¸ì½”ë”©ì´ UTF8ì´ ì•„ë‹Œ 경우 007F보다 í° ì½”ë“œ ì§€ì  ê°’ì—는 유니코드 ì´ìŠ¤ì¼€ì´" +"프 ê°’ì„ ì‚¬ìš©í•  수 ì—†ìŒ" -#: scan.l:1279 scan.l:1424 +#: scan.l:1280 scan.l:1425 msgid "invalid Unicode escape value" msgstr "ìž˜ëª»ëœ ìœ ë‹ˆì½”ë“œ ì´ìŠ¤ì¼€ì´í”„ ê°’" -#: scan.l:1481 +#: scan.l:1489 #, c-format msgid "nonstandard use of \\' in a string literal" msgstr "문ìžì—´ ì•ˆì— ìžˆëŠ” \\' 문ìžëŠ” í‘œì¤€ì´ ì•„ë‹™ë‹ˆë‹¤" -#: scan.l:1482 +#: scan.l:1490 #, c-format msgid "" "Use '' to write quotes in strings, or use the escape string syntax (E'...')." msgstr "ìž‘ì€ ë”°ì˜´í‘œëŠ” '' 형태니, ì¸ìš©ë¶€í˜¸ 표기법(E'...') 형태로 사용하십시오." -#: scan.l:1491 +#: scan.l:1499 #, c-format msgid "nonstandard use of \\\\ in a string literal" msgstr "문ìžì—´ ì•ˆì— ìžˆëŠ” \\\\ 문ìžëŠ” í‘œì¤€ì´ ì•„ë‹™ë‹ˆë‹¤" -#: scan.l:1492 +#: scan.l:1500 #, c-format msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." msgstr "백슬래시 표기는 ì¸ìš©ë¶€í˜¸ 표기법으로 사용하세요, 예, E'\\\\'." -#: scan.l:1506 +#: scan.l:1514 #, c-format msgid "nonstandard use of escape in a string literal" msgstr "문ìžì—´ ì•ˆì— ë¹„í‘œì¤€ escape 문ìžë¥¼ 사용하고 있습니다" -#: scan.l:1507 +#: 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 c826c24f40..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, 2017. +# 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: 2017-02-01 23:08+0000\n" -"PO-Revision-Date: 2017-02-02 15:23+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:2833 -#: commands/extension.c:3141 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: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 +#: 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,27 +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: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 +#: ../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:1061 -#: storage/ipc/procarray.c:1547 storage/ipc/procarray.c:1554 -#: storage/ipc/procarray.c:1968 storage/ipc/procarray.c:2571 +#: 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/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/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:509 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 +#: 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 @@ -249,7 +249,7 @@ msgstr "ошибка при удалении файла или каталога msgid "could not look up effective user ID %ld: %s" msgstr "выÑÑнить Ñффективный идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (%ld) не удалоÑÑŒ: %s" -#: ../common/username.c:47 libpq/auth.c:1744 +#: ../common/username.c:47 libpq/auth.c:1758 msgid "user does not exist" msgstr "пользователь не ÑущеÑтвует" @@ -298,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:4868 +#: ../port/chklocale.c:294 ../port/chklocale.c:423 postmaster/postmaster.c:4899 #, c-format msgid "Please report this to ." msgstr "" @@ -393,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 @@ -486,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" @@ -587,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: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 +#: 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 "идёт процеÑÑ Ð²Ð¾ÑÑтановлениÑ" @@ -630,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 @@ -757,71 +728,23 @@ 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" -msgstr "" -"ÑемейÑтво операторов gist \"%s\" Ñодержит некорректное определение ORDER BY " -"Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" - -#: access/gist/gistvalidate.c:225 -#, c-format -msgid "gist operator family \"%s\" contains operator %s with wrong signature" +"operator family \"%s\" of access method %s contains incorrect ORDER BY " +"opfamily specification for operator %s" 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:70 #, c-format @@ -854,79 +777,21 @@ 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 -#, c-format -msgid "hash operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"ÑемейÑтво операторов hash \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением" - -#: access/hash/hashvalidate.c:189 +#: access/hash/hashvalidate.c:247 access/nbtree/nbtvalidate.c:241 #, 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:1756 @@ -935,8 +800,8 @@ 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 +#: 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\" - Ñто ÑоÑтавной тип" @@ -956,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 "изменÑть кортежи во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" @@ -966,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:2314 +#: 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\"" @@ -984,10 +849,10 @@ 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:3087 -#: access/transam/xlog.c:3249 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 +#: 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" @@ -995,10 +860,10 @@ msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл \" #: 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 +#: 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" @@ -1009,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" @@ -1017,11 +882,11 @@ 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 +#: 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 @@ -1030,12 +895,12 @@ msgstr "не удалоÑÑŒ перейти к концу файла \"%s\": %m" msgid "could not write to file \"%s\": %m" msgstr "запиÑать в файл \"%s\" не удалоÑÑŒ: %m" -#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10441 +#: 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: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 +#: 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" @@ -1043,17 +908,17 @@ 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 +#: 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:658 replication/logical/reorderbuffer.c:2156 -#: replication/logical/reorderbuffer.c:2402 -#: replication/logical/reorderbuffer.c:3081 +#: 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:7105 #: utils/misc/guc.c:7138 @@ -1072,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:242 -#: commands/tablecmds.c:12180 +#: commands/indexcmds.c:1800 commands/tablecmds.c:242 +#: commands/tablecmds.c:12194 #, c-format msgid "\"%s\" is not an index" msgstr "\"%s\" - Ñто не индекÑ" @@ -1111,7 +976,7 @@ msgstr "" "полнотекÑтовую индекÑацию." #: access/nbtree/nbtpage.c:168 access/nbtree/nbtpage.c:371 -#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1702 +#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1703 #, c-format msgid "index \"%s\" is not a btree" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑвлÑетÑÑ b-деревом" @@ -1137,148 +1002,28 @@ 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 @@ -1505,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\"" @@ -1618,8 +1363,8 @@ msgstr "" "Идентификаторы линий времени должны быть меньше идентификатора линии-потомка." #: 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 +#: 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" @@ -1716,7 +1461,7 @@ msgstr "не удалоÑÑŒ получить информацию о файле msgid "could not read two-phase state file \"%s\": %m" msgstr "не удалоÑÑŒ прочитать файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m" -#: access/transam/twophase.c:1263 access/transam/xlog.c:6109 +#: access/transam/twophase.c:1263 access/transam/xlog.c:6115 #, c-format msgid "Failed while allocating an XLog reading processor." msgstr "Ðе удалоÑÑŒ размеÑтить обработчик журнала транзакций." @@ -1851,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 "" @@ -1883,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:2299 +#: 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:2319 +#: 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:2582 +#: 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:3224 +#: access/transam/xlog.c:3230 #, c-format msgid "not enough data in file \"%s\"" msgstr "недоÑтаточно данных в файле\"%s\"" -#: access/transam/xlog.c:3365 +#: access/transam/xlog.c:3371 #, c-format msgid "could not open transaction log file \"%s\": %m" msgstr "не удалоÑÑŒ открыть файл журнала транзакций \"%s\": %m" -#: access/transam/xlog.c:3554 access/transam/xlog.c:5339 +#: 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:3611 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:3671 access/transam/xlog.c:3746 -#: access/transam/xlog.c:3944 +#: 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:3827 +#: access/transam/xlog.c:3833 #, c-format msgid "recycled transaction log file \"%s\"" msgstr "файл журнала транзакций \"%s\" иÑпользуетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾" -#: access/transam/xlog.c:3839 +#: access/transam/xlog.c:3845 #, c-format msgid "removing transaction log file \"%s\"" msgstr "файл журнала транзакций \"%s\" удалÑетÑÑ" -#: access/transam/xlog.c:3859 +#: access/transam/xlog.c:3865 #, c-format msgid "could not rename old transaction log file \"%s\": %m" msgstr "не удалоÑÑŒ переименовать Ñтарый файл журнала транзакций \"%s\": %m" -#: access/transam/xlog.c:3871 +#: access/transam/xlog.c:3877 #, 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 +#: 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:3920 +#: access/transam/xlog.c:3926 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "ÑоздаётÑÑ Ð¾Ñ‚ÑутÑтвующий каталог WAL \"%s\"" -#: access/transam/xlog.c:3923 +#: access/transam/xlog.c:3929 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "не удалоÑÑŒ Ñоздать отÑутÑтвующий каталог \"%s\": %m" -#: access/transam/xlog.c:3954 +#: access/transam/xlog.c:3960 #, c-format msgid "removing transaction log backup history file \"%s\"" msgstr "удалÑетÑÑ Ñ„Ð°Ð¹Ð» иÑтории ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð°: \"%s\"" -#: access/transam/xlog.c:4035 +#: 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:4157 +#: 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:4171 +#: access/transam/xlog.c:4177 #, c-format msgid "" "new timeline %u forked off current database system timeline %u before " @@ -2047,56 +1792,56 @@ msgstr "" "Ð½Ð¾Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u ответвилаÑÑŒ от текущей линии времени базы данных %u " "до текущей точки воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %X/%X" -#: access/transam/xlog.c:4190 +#: access/transam/xlog.c:4196 #, c-format msgid "new target timeline is %u" msgstr "Ð½Ð¾Ð²Ð°Ñ Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u" -#: access/transam/xlog.c:4270 +#: access/transam/xlog.c:4276 #, c-format msgid "could not create control file \"%s\": %m" msgstr "не удалоÑÑŒ Ñоздать файл \"%s\": %m" -#: access/transam/xlog.c:4281 access/transam/xlog.c:4517 +#: 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:4287 access/transam/xlog.c:4523 +#: 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:4292 access/transam/xlog.c:4528 +#: 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:4310 access/transam/xlog.c:4506 +#: 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:4316 +#: access/transam/xlog.c:4322 #, c-format msgid "could not read from control file: %m" msgstr "не удалоÑÑŒ прочитать файл pg_control: %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 +#: 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:4330 +#: access/transam/xlog.c:4336 #, c-format msgid "" "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), " @@ -2105,7 +1850,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ PG_CONTROL_VERSION %d (0x%08x), но " "Ñервер Ñкомпилирован Ñ PG_CONTROL_VERSION %d (0x%08x)." -#: access/transam/xlog.c:4334 +#: access/transam/xlog.c:4340 #, c-format msgid "" "This could be a problem of mismatched byte ordering. It looks like you need " @@ -2114,7 +1859,7 @@ msgstr "" "Возможно, проблема вызвана разным порÑдком байт. КажетÑÑ, вам надо выполнить " "initdb." -#: access/transam/xlog.c:4339 +#: access/transam/xlog.c:4345 #, c-format msgid "" "The database cluster was initialized with PG_CONTROL_VERSION %d, but the " @@ -2123,18 +1868,18 @@ 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 +#: 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:4353 +#: access/transam/xlog.c:4359 #, c-format msgid "incorrect checksum in control file" msgstr "ошибка контрольной Ñуммы в файле pg_control" -#: access/transam/xlog.c:4363 +#: access/transam/xlog.c:4369 #, c-format msgid "" "The database cluster was initialized with CATALOG_VERSION_NO %d, but the " @@ -2143,7 +1888,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ CATALOG_VERSION_NO %d, но Ñервер " "Ñкомпилирован Ñ CATALOG_VERSION_NO %d." -#: access/transam/xlog.c:4370 +#: access/transam/xlog.c:4376 #, c-format msgid "" "The database cluster was initialized with MAXALIGN %d, but the server was " @@ -2152,7 +1897,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ MAXALIGN %d, но Ñервер " "Ñкомпилирован Ñ MAXALIGN %d." -#: access/transam/xlog.c:4377 +#: access/transam/xlog.c:4383 #, c-format msgid "" "The database cluster appears to use a different floating-point number format " @@ -2161,7 +1906,7 @@ msgstr "" "КажетÑÑ, в клаÑтере баз данных и в программе Ñервера иÑпользуютÑÑ Ñ€Ð°Ð·Ð½Ñ‹Ðµ " "форматы чиÑел Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой." -#: access/transam/xlog.c:4382 +#: access/transam/xlog.c:4388 #, c-format msgid "" "The database cluster was initialized with BLCKSZ %d, but the server was " @@ -2170,18 +1915,18 @@ 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 +#: 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:4389 +#: access/transam/xlog.c:4395 #, c-format msgid "" "The database cluster was initialized with RELSEG_SIZE %d, but the server was " @@ -2190,7 +1935,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ RELSEG_SIZE %d, но Ñервер " "Ñкомпилирован Ñ RELSEG_SIZE %d." -#: access/transam/xlog.c:4396 +#: access/transam/xlog.c:4402 #, c-format msgid "" "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was " @@ -2199,7 +1944,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ XLOG_BLCKSZ %d, но Ñервер " "Ñкомпилирован Ñ XLOG_BLCKSZ %d." -#: access/transam/xlog.c:4403 +#: access/transam/xlog.c:4409 #, c-format msgid "" "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " @@ -2208,7 +1953,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ XLOG_SEG_SIZE %d, но Ñервер " "Ñкомпилирован Ñ XLOG_SEG_SIZE %d." -#: access/transam/xlog.c:4410 +#: access/transam/xlog.c:4416 #, c-format msgid "" "The database cluster was initialized with NAMEDATALEN %d, but the server was " @@ -2217,7 +1962,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ NAMEDATALEN %d, но Ñервер " "Ñкомпилирован Ñ NAMEDATALEN %d." -#: access/transam/xlog.c:4417 +#: access/transam/xlog.c:4423 #, c-format msgid "" "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server " @@ -2226,7 +1971,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ INDEX_MAX_KEYS %d, но Ñервер " "Ñкомпилирован Ñ INDEX_MAX_KEYS %d." -#: access/transam/xlog.c:4424 +#: access/transam/xlog.c:4430 #, c-format msgid "" "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the " @@ -2235,7 +1980,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ TOAST_MAX_CHUNK_SIZE %d, но Ñервер " "Ñкомпилирован Ñ TOAST_MAX_CHUNK_SIZE %d." -#: access/transam/xlog.c:4431 +#: access/transam/xlog.c:4437 #, c-format msgid "" "The database cluster was initialized with LOBLKSIZE %d, but the server was " @@ -2244,7 +1989,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ LOBLKSIZE %d, но Ñервер " "Ñкомпилирован Ñ LOBLKSIZE %d." -#: access/transam/xlog.c:4440 +#: access/transam/xlog.c:4446 #, c-format msgid "" "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " @@ -2253,7 +1998,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован без HAVE_INT64_TIMESTAMP, но Ñервер " "Ñкомпилирован Ñ HAVE_INT64_TIMESTAMP." -#: access/transam/xlog.c:4447 +#: access/transam/xlog.c:4453 #, c-format msgid "" "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the " @@ -2262,7 +2007,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ HAVE_INT64_TIMESTAMP, но Ñервер " "Ñкомпилирован без HAVE_INT64_TIMESTAMP." -#: access/transam/xlog.c:4456 +#: access/transam/xlog.c:4462 #, c-format msgid "" "The database cluster was initialized without USE_FLOAT4_BYVAL but the server " @@ -2271,7 +2016,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован без USE_FLOAT4_BYVAL, но Ñервер " "Ñкомпилирован Ñ USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4463 +#: access/transam/xlog.c:4469 #, c-format msgid "" "The database cluster was initialized with USE_FLOAT4_BYVAL but the server " @@ -2280,7 +2025,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ USE_FLOAT4_BYVAL, но Ñервер " "Ñкомпилирован без USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4472 +#: access/transam/xlog.c:4478 #, c-format msgid "" "The database cluster was initialized without USE_FLOAT8_BYVAL but the server " @@ -2289,7 +2034,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован без USE_FLOAT8_BYVAL, но Ñервер " "Ñкомпилирован Ñ USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4479 +#: access/transam/xlog.c:4485 #, c-format msgid "" "The database cluster was initialized with USE_FLOAT8_BYVAL but the server " @@ -2298,72 +2043,72 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ USE_FLOAT8_BYVAL, но Ñервер был " "Ñкомпилирован без USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4900 +#: access/transam/xlog.c:4906 #, c-format msgid "could not write bootstrap transaction log file: %m" msgstr "не удалоÑÑŒ запиÑать начальный файл журнала транзакций: %m" -#: access/transam/xlog.c:4906 +#: access/transam/xlog.c:4912 #, c-format msgid "could not fsync bootstrap transaction log file: %m" -msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ начальный файл журнала транзакций: %m" +msgstr "не удалоÑÑŒ ÑброÑить на диÑк начальный файл журнала транзакций: %m" -#: access/transam/xlog.c:4911 +#: access/transam/xlog.c:4917 #, c-format msgid "could not close bootstrap transaction log file: %m" msgstr "не удалоÑÑŒ закрыть начальный файл журнала транзакций: %m" -#: access/transam/xlog.c:4986 +#: access/transam/xlog.c:4992 #, c-format msgid "could not open recovery command file \"%s\": %m" msgstr "не удалоÑÑŒ открыть файл команд воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\": %m" -#: access/transam/xlog.c:5032 access/transam/xlog.c:5117 +#: 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:5035 +#: access/transam/xlog.c:5041 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." msgstr "ДопуÑтимые значениÑ: \"pause\", \"promote\" и \"shutdown\"." -#: access/transam/xlog.c:5055 +#: 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:5072 +#: 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:5103 +#: 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:5120 +#: access/transam/xlog.c:5126 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "ЕдинÑтвенное допуÑтимое значение: \"immediate\"." -#: access/transam/xlog.c:5133 access/transam/xlog.c:5144 +#: 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:5179 +#: access/transam/xlog.c:5185 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "параметр \"%s\" требует временное значение" -#: access/transam/xlog.c:5181 catalog/dependency.c:990 catalog/dependency.c:991 +#: 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:9542 commands/user.c:1045 -#: commands/view.c:499 libpq/auth.c:307 replication/syncrep.c:919 +#: 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 @@ -2372,12 +2117,12 @@ msgstr "параметр \"%s\" требует временное значени msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5188 +#: access/transam/xlog.c:5194 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "нераÑпознанный параметр воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\"" -#: access/transam/xlog.c:5199 +#: access/transam/xlog.c:5205 #, c-format msgid "" "recovery command file \"%s\" specified neither primary_conninfo nor " @@ -2386,7 +2131,7 @@ msgstr "" "в файле команд воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" не указан параметр primary_conninfo или " "restore_command" -#: access/transam/xlog.c:5201 +#: access/transam/xlog.c:5207 #, c-format msgid "" "The database server will regularly poll the pg_xlog subdirectory to check " @@ -2395,7 +2140,7 @@ msgstr "" "Сервер БД будет регулÑрно опрашивать подкаталог pg_xlog и проверÑть " "ÑодержащиеÑÑ Ð² нём файлы." -#: access/transam/xlog.c:5208 +#: access/transam/xlog.c:5214 #, c-format msgid "" "recovery command file \"%s\" must specify restore_command when standby mode " @@ -2404,68 +2149,68 @@ msgstr "" "в файле команд воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" может отÑутÑтвовать restore_command, " "только еÑли Ñто резервный Ñервер" -#: access/transam/xlog.c:5229 +#: access/transam/xlog.c:5235 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "" "режим резервного Ñервера не поддерживаетÑÑ Ð¾Ð´Ð½Ð¾Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑким Ñервером" -#: access/transam/xlog.c:5248 +#: access/transam/xlog.c:5254 #, c-format msgid "recovery target timeline %u does not exist" msgstr "Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %u не ÑущеÑтвует" -#: access/transam/xlog.c:5369 +#: access/transam/xlog.c:5375 #, c-format msgid "archive recovery complete" msgstr "воÑÑтановление архива завершено" -#: access/transam/xlog.c:5428 access/transam/xlog.c:5656 +#: access/transam/xlog.c:5434 access/transam/xlog.c:5662 #, c-format msgid "recovery stopping after reaching consistency" msgstr "" "воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ ÑоглаÑованного ÑоÑтоÑниÑ" -#: access/transam/xlog.c:5516 +#: access/transam/xlog.c:5522 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "" "воÑÑтановление оÑтанавливаетÑÑ Ð¿ÐµÑ€ÐµÐ´ фикÑированием транзакции %u, Ð²Ñ€ÐµÐ¼Ñ %s" -#: access/transam/xlog.c:5523 +#: access/transam/xlog.c:5529 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "" "воÑÑтановление оÑтанавливаетÑÑ Ð¿ÐµÑ€ÐµÐ´ прерыванием транзакции %u, Ð²Ñ€ÐµÐ¼Ñ %s" -#: access/transam/xlog.c:5568 +#: access/transam/xlog.c:5574 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "воÑÑтановление оÑтанавливаетÑÑ Ð² точке воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\", Ð²Ñ€ÐµÐ¼Ñ %s" -#: access/transam/xlog.c:5636 +#: access/transam/xlog.c:5642 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "" "воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле фикÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸ %u, Ð²Ñ€ÐµÐ¼Ñ %s" -#: access/transam/xlog.c:5644 +#: access/transam/xlog.c:5650 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "" "воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸ %u, Ð²Ñ€ÐµÐ¼Ñ %s" -#: access/transam/xlog.c:5683 +#: access/transam/xlog.c:5689 #, c-format msgid "recovery has paused" msgstr "воÑÑтановление приоÑтановлено" -#: access/transam/xlog.c:5684 +#: access/transam/xlog.c:5690 #, c-format msgid "Execute pg_xlog_replay_resume() to continue." msgstr "Выполните pg_xlog_replay_resume() Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ." -#: access/transam/xlog.c:5891 +#: access/transam/xlog.c:5897 #, c-format msgid "" "hot standby is not possible because %s = %d is a lower setting than on the " @@ -2474,12 +2219,12 @@ msgstr "" "режим горÑчего резерва невозможен, так как параметр %s = %d, меньше чем на " "главном Ñервере (на нём было значение %d)" -#: access/transam/xlog.c:5917 +#: 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:5918 +#: access/transam/xlog.c:5924 #, c-format msgid "" "This happens if you temporarily set wal_level=minimal without taking a new " @@ -2488,7 +2233,7 @@ msgstr "" "Это проиÑходит, еÑли вы на Ð²Ñ€ÐµÐ¼Ñ ÑƒÑтановили wal_level=minimal и не Ñделали " "резервную копию базу данных." -#: access/transam/xlog.c:5929 +#: access/transam/xlog.c:5935 #, c-format msgid "" "hot standby is not possible because wal_level was not set to \"replica\" or " @@ -2497,7 +2242,7 @@ msgstr "" "режим горÑчего резерва невозможен, так как на главном Ñервере уÑтановлен " "неподходÑщий wal_level (должен быть \"replica\" или выше)" -#: access/transam/xlog.c:5930 +#: access/transam/xlog.c:5936 #, c-format msgid "" "Either set wal_level to \"replica\" on the master, or turn off hot_standby " @@ -2506,32 +2251,32 @@ msgstr "" "Либо уÑтановите Ð´Ð»Ñ wal_level значение \"replica\" на главном Ñервере, либо " "выключите hot_standby здеÑÑŒ." -#: access/transam/xlog.c:5987 +#: access/transam/xlog.c:5993 #, c-format msgid "control file contains invalid data" msgstr "файл pg_control Ñодержит неверные данные" -#: access/transam/xlog.c:5993 +#: access/transam/xlog.c:5999 #, c-format msgid "database system was shut down at %s" msgstr "ÑиÑтема БД была выключена: %s" -#: access/transam/xlog.c:5998 +#: access/transam/xlog.c:6004 #, c-format msgid "database system was shut down in recovery at %s" msgstr "ÑиÑтема БД была выключена в процеÑÑе воÑÑтановлениÑ: %s" -#: access/transam/xlog.c:6002 +#: access/transam/xlog.c:6008 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "выключение ÑиÑтемы БД было прервано; поÑледний момент работы: %s" -#: access/transam/xlog.c:6006 +#: access/transam/xlog.c:6012 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "работа ÑиÑтемы БД была прервана во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑÑтановлениÑ: %s" -#: access/transam/xlog.c:6008 +#: access/transam/xlog.c:6014 #, c-format msgid "" "This probably means that some data is corrupted and you will have to use the " @@ -2540,14 +2285,14 @@ msgstr "" "Это Ñкорее вÑего означает, что некоторые данные повреждены и вам придётÑÑ " "воÑÑтановить БД из поÑледней резервной копии." -#: access/transam/xlog.c:6012 +#: 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:6014 +#: access/transam/xlog.c:6020 #, c-format msgid "" "If this has occurred more than once some data might be corrupted and you " @@ -2556,53 +2301,53 @@ msgstr "" "ЕÑли Ñто проиÑходит поÑтоÑнно, возможно, какие-то данные были иÑпорчены и " "Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñтоит выбрать более раннюю точку." -#: access/transam/xlog.c:6018 +#: access/transam/xlog.c:6024 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "работа ÑиÑтемы БД была прервана; поÑледний момент работы: %s" -#: access/transam/xlog.c:6074 +#: access/transam/xlog.c:6080 #, c-format msgid "entering standby mode" msgstr "переход в режим резервного Ñервера" -#: access/transam/xlog.c:6077 +#: access/transam/xlog.c:6083 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до XID %u" -#: access/transam/xlog.c:6081 +#: access/transam/xlog.c:6087 #, c-format msgid "starting point-in-time recovery to %s" msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до %s" -#: access/transam/xlog.c:6085 +#: access/transam/xlog.c:6091 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до \"%s\"" -#: access/transam/xlog.c:6089 +#: access/transam/xlog.c:6095 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "" "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до первой точки ÑоглаÑованноÑти" -#: access/transam/xlog.c:6092 +#: access/transam/xlog.c:6098 #, c-format msgid "starting archive recovery" msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление архива" -#: access/transam/xlog.c:6136 access/transam/xlog.c:6264 +#: 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:6150 +#: access/transam/xlog.c:6156 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "не удалоÑÑŒ найти положение REDO, указанное запиÑью контрольной точки" -#: access/transam/xlog.c:6151 access/transam/xlog.c:6158 +#: 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/" @@ -2611,47 +2356,47 @@ msgstr "" "ЕÑли вы не воÑÑтанавливаете БД из резервной копии, попробуйте удалить файл " "\"%s/backup_label\"." -#: access/transam/xlog.c:6157 +#: access/transam/xlog.c:6163 #, c-format msgid "could not locate required checkpoint record" msgstr "не удалоÑÑŒ Ñчитать нужную запиÑÑŒ контрольной точки" -#: access/transam/xlog.c:6183 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:6215 access/transam/xlog.c:6221 +#: 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:6217 access/transam/xlog.c:11032 +#: 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:6223 +#: access/transam/xlog.c:6229 #, 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 +#: 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:6283 +#: access/transam/xlog.c:6289 #, c-format msgid "using previous checkpoint record at %X/%X" msgstr "иÑпользуетÑÑ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ контрольной точки по Ñмещению %X/%X" -#: access/transam/xlog.c:6327 +#: 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:6329 +#: access/transam/xlog.c:6335 #, c-format msgid "" "Latest checkpoint is at %X/%X on timeline %u, but in the history of the " @@ -2660,7 +2405,7 @@ msgstr "" "ПоÑледнÑÑ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°: %X/%X на линии времени %u, но в иÑтории " "запрошенной линии времени Ñервер ответвилÑÑ Ñ Ñтой линии в %X/%X." -#: access/transam/xlog.c:6345 +#: access/transam/xlog.c:6351 #, c-format msgid "" "requested timeline %u does not contain minimum recovery point %X/%X on " @@ -2669,22 +2414,22 @@ msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u не Ñодержит минимальную точку воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %X/" "%X на линии времени %u" -#: access/transam/xlog.c:6376 +#: access/transam/xlog.c:6382 #, c-format msgid "invalid next transaction ID" msgstr "неверный ID Ñледующей транзакции" -#: access/transam/xlog.c:6459 +#: access/transam/xlog.c:6465 #, c-format msgid "invalid redo in checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ REDO в контрольной точке" -#: access/transam/xlog.c:6470 +#: access/transam/xlog.c:6476 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ REDO в контрольной точке выключениÑ" -#: access/transam/xlog.c:6498 +#: access/transam/xlog.c:6504 #, c-format msgid "" "database system was not properly shut down; automatic recovery in progress" @@ -2692,19 +2437,19 @@ msgstr "" "ÑиÑтема БД была оÑтановлена нештатно; производитÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкое " "воÑÑтановление" -#: access/transam/xlog.c:6502 +#: 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:6546 +#: 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:6547 +#: access/transam/xlog.c:6553 #, c-format msgid "" "This means that the backup is corrupted and you will have to use another " @@ -2713,44 +2458,44 @@ msgstr "" "Это означает, что Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° и Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð‘Ð” " "придётÑÑ Ð¸Ñпользовать другую копию." -#: access/transam/xlog.c:6621 +#: access/transam/xlog.c:6627 #, c-format msgid "initializing for hot standby" msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð³Ð¾Ñ€Ñчего резерва" -#: access/transam/xlog.c:6753 +#: access/transam/xlog.c:6759 #, c-format msgid "redo starts at %X/%X" msgstr "запиÑÑŒ REDO начинаетÑÑ Ñо ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %X/%X" -#: access/transam/xlog.c:6978 +#: access/transam/xlog.c:6984 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° оÑтановки воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑˆÐµÑтвует ÑоглаÑованной точке " "воÑÑтановлениÑ" -#: access/transam/xlog.c:7016 +#: access/transam/xlog.c:7022 #, c-format msgid "redo done at %X/%X" msgstr "запиÑи REDO обработаны до ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %X/%X" -#: access/transam/xlog.c:7021 access/transam/xlog.c:8969 +#: 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:7030 +#: access/transam/xlog.c:7036 #, c-format msgid "redo is not required" msgstr "данные REDO не требуютÑÑ" -#: access/transam/xlog.c:7105 access/transam/xlog.c:7109 +#: 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:7106 +#: access/transam/xlog.c:7112 #, c-format msgid "" "All WAL generated while online backup was taken must be available at " @@ -2759,7 +2504,7 @@ msgstr "" "Ð’Ñе журналы WAL, Ñозданные во Ð²Ñ€ÐµÐ¼Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\", " "должны быть в наличии Ð´Ð»Ñ Ð²Ð¾ÑÑтановлениÑ." -#: access/transam/xlog.c:7110 +#: access/transam/xlog.c:7116 #, c-format msgid "" "Online backup started with pg_start_backup() must be ended with " @@ -2769,102 +2514,102 @@ msgstr "" "должно закончитьÑÑ pg_stop_backup(), и Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть " "доÑтупны вÑе журналы WAL." -#: access/transam/xlog.c:7113 +#: access/transam/xlog.c:7119 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL закончилÑÑ Ð´Ð¾ ÑоглаÑованной точки воÑÑтановлениÑ" -#: access/transam/xlog.c:7140 +#: access/transam/xlog.c:7146 #, c-format msgid "selected new timeline ID: %u" msgstr "выбранный ID новой линии времени: %u" -#: access/transam/xlog.c:7551 +#: access/transam/xlog.c:7557 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "ÑоглаÑованное ÑоÑтоÑние воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтигнуто по Ñмещению %X/%X" -#: access/transam/xlog.c:7742 +#: access/transam/xlog.c:7748 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на первичную контрольную точку в файле pg_control" -#: access/transam/xlog.c:7746 +#: access/transam/xlog.c:7752 #, c-format msgid "invalid secondary checkpoint link in control file" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на вторичную контрольную точку в файле pg_control" -#: access/transam/xlog.c:7750 +#: access/transam/xlog.c:7756 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на контрольную точку в файле backup_label" -#: access/transam/xlog.c:7767 +#: access/transam/xlog.c:7773 #, c-format msgid "invalid primary checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ первичной контрольной точки" -#: access/transam/xlog.c:7771 +#: access/transam/xlog.c:7777 #, c-format msgid "invalid secondary checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ вторичной контрольной точки" -#: access/transam/xlog.c:7775 +#: access/transam/xlog.c:7781 #, c-format msgid "invalid checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ контрольной точки" -#: access/transam/xlog.c:7786 +#: access/transam/xlog.c:7792 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "неверный ID менеджера реÑурÑов в запиÑи первичной контрольной точки" -#: access/transam/xlog.c:7790 +#: access/transam/xlog.c:7796 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" msgstr "неверный ID менеджера реÑурÑов в запиÑи вторичной контрольной точки" -#: access/transam/xlog.c:7794 +#: access/transam/xlog.c:7800 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "неверный ID менеджера реÑурÑов в запиÑи контрольной точки" -#: access/transam/xlog.c:7806 +#: access/transam/xlog.c:7812 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "неверные флаги xl_info в запиÑи первичной контрольной точки" -#: access/transam/xlog.c:7810 +#: access/transam/xlog.c:7816 #, c-format msgid "invalid xl_info in secondary checkpoint record" msgstr "неверные флаги xl_info в запиÑи вторичной контрольной точки" -#: access/transam/xlog.c:7814 +#: access/transam/xlog.c:7820 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "неверные флаги xl_info в запиÑи контрольной точки" -#: access/transam/xlog.c:7825 +#: access/transam/xlog.c:7831 #, c-format msgid "invalid length of primary checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи первичной контрольной точки" -#: access/transam/xlog.c:7829 +#: access/transam/xlog.c:7835 #, c-format msgid "invalid length of secondary checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи вторичной контрольной точки" -#: access/transam/xlog.c:7833 +#: access/transam/xlog.c:7839 #, c-format msgid "invalid length of checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи контрольной точки" -#: access/transam/xlog.c:8001 +#: access/transam/xlog.c:8007 #, c-format msgid "shutting down" msgstr "выключение" -#: access/transam/xlog.c:8514 +#: access/transam/xlog.c:8531 #, c-format msgid "" "concurrent transaction log activity while database system is shutting down" @@ -2872,29 +2617,29 @@ msgstr "" "во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑиÑтемы баз данных отмечена активноÑть в журнале " "транзакций" -#: access/transam/xlog.c:8768 +#: access/transam/xlog.c:8785 #, c-format msgid "skipping restartpoint, recovery has already ended" msgstr "" "Ñоздание точки перезапуÑка пропуÑкаетÑÑ, воÑÑтановление уже закончилоÑÑŒ" -#: access/transam/xlog.c:8791 +#: access/transam/xlog.c:8808 #, c-format msgid "skipping restartpoint, already performed at %X/%X" msgstr "" "Ñоздание точки перезапуÑка пропуÑкаетÑÑ, она уже Ñоздана по Ñмещению %X/%X" -#: access/transam/xlog.c:8967 +#: access/transam/xlog.c:8984 #, c-format msgid "recovery restart point at %X/%X" msgstr "точка перезапуÑка воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñмещению %X/%X" -#: access/transam/xlog.c:9100 +#: access/transam/xlog.c:9117 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "точка воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" Ñоздана по Ñмещению %X/%X" -#: access/transam/xlog.c:9230 +#: access/transam/xlog.c:9247 #, c-format msgid "" "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint " @@ -2903,13 +2648,13 @@ msgstr "" "неожиданный ID предыдущей линии времени %u (ID текущей линии времени %u) в " "запиÑи контрольной точки" -#: access/transam/xlog.c:9239 +#: access/transam/xlog.c:9256 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "неожиданный ID линии времени %u (поÑле %u) в запиÑи контрольной точки" # skip-rule: capital-letter-first -#: access/transam/xlog.c:9255 +#: access/transam/xlog.c:9272 #, c-format msgid "" "unexpected timeline ID %u in checkpoint record, before reaching minimum " @@ -2918,79 +2663,79 @@ msgstr "" "неожиданный ID линии времени %u в запиÑи контрольной точки, до доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ " "минимальной к. Ñ‚. %X/%X на линии времени %u" -#: access/transam/xlog.c:9326 +#: access/transam/xlog.c:9343 #, 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 +#: 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:9727 +#: access/transam/xlog.c:9744 #, c-format msgid "could not fsync log segment %s: %m" msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ Ñегмент журнала %s: %m" -#: access/transam/xlog.c:9751 +#: access/transam/xlog.c:9768 #, c-format msgid "could not fsync log file %s: %m" msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл журнала %s: %m" -#: access/transam/xlog.c:9759 +#: access/transam/xlog.c:9776 #, c-format msgid "could not fsync write-through log file %s: %m" msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл журнала Ñквозной запиÑи %s: %m" -#: access/transam/xlog.c:9768 +#: access/transam/xlog.c:9785 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "" "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ данные (fdatasync) файла журнала %s: %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 +#: 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:9868 access/transam/xlog.c:10372 +#: 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:9869 access/transam/xlog.c:10373 -#: 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:9874 +#: access/transam/xlog.c:9891 #, 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 +#: 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:9912 +#: access/transam/xlog.c:9929 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Выполните pg_stop_backup() и повторите операцию." -#: access/transam/xlog.c:10007 +#: access/transam/xlog.c:10024 #, c-format msgid "" "WAL generated with full_page_writes=off was replayed since last restartpoint" @@ -2998,7 +2743,7 @@ msgstr "" "ПоÑле поÑледней точки перезапуÑка был воÑпроизведён WAL, Ñозданный в режиме " "full_page_writes=off." -#: access/transam/xlog.c:10009 access/transam/xlog.c:10554 +#: 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 " @@ -3010,39 +2755,39 @@ msgstr "" "CHECKPOINT на главном Ñервере, а затем попробуйте резервное копирование \"на " "ходу\" ещё раз." -#: access/transam/xlog.c:10076 replication/basebackup.c:1026 +#: 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:10083 replication/basebackup.c:1031 +#: 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:10136 commands/tablespace.c:391 +#: 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: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 +#: 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: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 +#: 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:10184 access/transam/xlog.c:10222 +#: 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 " @@ -3051,36 +2796,36 @@ msgstr "" "ЕÑли вы Ñчитаете, что Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ резервном копировании неверна, удалите " "файл \"%s\" и попробуйте Ñнова." -#: access/transam/xlog.c:10201 access/transam/xlog.c:10239 -#: access/transam/xlog.c:10615 +#: 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:10388 +#: access/transam/xlog.c:10418 #, c-format msgid "exclusive backup not in progress" msgstr "монопольное резервное копирование не выполнÑетÑÑ" -#: access/transam/xlog.c:10415 +#: access/transam/xlog.c:10445 #, 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 +#: 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:10506 replication/basebackup.c:938 +#: access/transam/xlog.c:10539 replication/basebackup.c:938 #, c-format msgid "the standby was promoted during online backup" msgstr "" "дежурный Ñервер был повышен в процеÑÑе резервного ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\"" -#: access/transam/xlog.c:10507 replication/basebackup.c:939 +#: 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. " @@ -3089,7 +2834,7 @@ msgstr "" "Это означает, что ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¸Ñпорчена и иÑпользовать её не " "Ñледует. Попробуйте резервное копирование \"на ходу\" ещё раз." -#: access/transam/xlog.c:10552 +#: access/transam/xlog.c:10585 #, c-format msgid "" "WAL generated with full_page_writes=off was replayed during online backup" @@ -3097,7 +2842,7 @@ msgstr "" "Ð’ процеÑÑе резервного ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\" был воÑпроизведён WAL, " "Ñозданный в режиме full_page_writes=off" -#: access/transam/xlog.c:10664 +#: access/transam/xlog.c:10697 #, c-format msgid "" "pg_stop_backup cleanup done, waiting for required WAL segments to be archived" @@ -3105,7 +2850,7 @@ msgstr "" "очиÑтка в pg_stop_backup выполнена, ожидаютÑÑ Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ñ‹Ðµ Ñегменты WAL Ð´Ð»Ñ " "архивации" -#: access/transam/xlog.c:10674 +#: access/transam/xlog.c:10707 #, c-format msgid "" "pg_stop_backup still waiting for all required WAL segments to be archived " @@ -3114,7 +2859,7 @@ msgstr "" "pg_stop_backup вÑÑ‘ ещё ждёт вÑе требуемые Ñегменты WAL Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸ (прошло " "%d Ñек.)" -#: access/transam/xlog.c:10676 +#: access/transam/xlog.c:10709 #, c-format msgid "" "Check that your archive_command is executing properly. pg_stop_backup can " @@ -3125,13 +2870,13 @@ msgstr "" "можно отменить безопаÑно, но Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных будет непригодна " "без вÑех Ñегментов WAL." -#: access/transam/xlog.c:10683 +#: 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:10687 +#: access/transam/xlog.c:10720 #, c-format msgid "" "WAL archiving is not enabled; you must ensure that all required WAL segments " @@ -3141,35 +2886,35 @@ msgstr "" "Ñегментов WAL другими ÑредÑтвами Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð¹ копии" #. translator: %s is an XLog record description -#: access/transam/xlog.c:10972 +#: 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:11021 +#: access/transam/xlog.c:11054 #, c-format msgid "online backup mode was not canceled" msgstr "режим ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\" не был отменён" -#: access/transam/xlog.c:11022 +#: 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:11031 access/transam/xlog.c:11043 -#: access/transam/xlog.c:11053 +#: 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:11044 +#: 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:11054 +#: access/transam/xlog.c:11087 #, c-format msgid "" "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to " @@ -3178,28 +2923,28 @@ msgstr "" "Файл \"%s\" был переименован в \"%s\", но переименовать \"%s\" в \"%s\" не " "удалоÑÑŒ: %m." -#: access/transam/xlog.c:11176 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:11188 +#: 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:11662 +#: access/transam/xlog.c:11695 #, c-format msgid "received promote request" msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ ÑтатуÑа" -#: access/transam/xlog.c:11675 +#: access/transam/xlog.c:11708 #, c-format msgid "trigger file found: %s" msgstr "найден файл триггера: %s" -#: access/transam/xlog.c:11684 +#: access/transam/xlog.c:11717 #, c-format msgid "could not stat trigger file \"%s\": %m" msgstr "не удалоÑÑŒ получить информацию о файле триггера \"%s\": %m" @@ -3228,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:1298 +#: 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" @@ -3244,107 +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 +#: 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:2292 -#: storage/file/fd.c:2891 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 +#: 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:1729 -#: commands/extension.c:1838 commands/extension.c:2031 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: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:2763 +#: 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 +#: 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:1733 -#: commands/extension.c:1842 commands/extension.c:2035 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 +#: 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 +#: 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 не доÑтаточен Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ воÑÑтановлениÑ" # well-spelled: Ñимв -#: access/transam/xlogfuncs.c:334 +#: 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 "" @@ -3517,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" @@ -3663,24 +3408,24 @@ msgid "large object %u does not exist" msgstr "большой объект %u не ÑущеÑтвует" #: 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/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:1219 -#: commands/extension.c:1227 commands/extension.c:1235 -#: commands/extension.c:1243 commands/extension.c:2761 +#: 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 @@ -3704,21 +3449,21 @@ msgid "default privileges cannot be set for columns" msgstr "права по умолчанию Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ Ð´Ð»Ñ Ñтолбцов" #: 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 +#: 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:1984 +#: utils/adt/ruleutils.c:1987 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "Ñтолбец \"%s\" в таблице \"%s\" не ÑущеÑтвует" #: 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 +#: 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 @@ -3771,7 +3516,7 @@ msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² маÑÑивов Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ п msgid "Set the privileges of the element type instead." msgstr "ВмеÑто Ñтого уÑтановите права Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° Ñлемента." -#: catalog/aclchk.c:3137 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\" - Ñто не домен" @@ -4176,12 +3921,12 @@ msgid "System catalog modifications are currently disallowed." msgstr "Изменение ÑиÑтемного каталога в текущем ÑоÑтоÑнии запрещено." #: catalog/heap.c:415 commands/tablecmds.c:1439 commands/tablecmds.c:1896 -#: commands/tablecmds.c:4820 +#: commands/tablecmds.c:4833 #, c-format msgid "tables can have at most %d columns" msgstr "макÑимальное чиÑло Ñтолбцов в таблице: %d" -#: catalog/heap.c:432 commands/tablecmds.c:5081 +#: catalog/heap.c:432 commands/tablecmds.c:5094 #, c-format msgid "column name \"%s\" conflicts with a system column name" msgstr "Ð¸Ð¼Ñ Ñтолбца \"%s\" конфликтует Ñ ÑиÑтемным Ñтолбцом" @@ -4219,21 +3964,21 @@ msgstr "" "Ñортировки" #: catalog/heap.c:586 commands/createas.c:204 commands/createas.c:501 -#: commands/indexcmds.c:1132 commands/view.c:103 regex/regc_pg_locale.c:262 +#: 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:1067 catalog/index.c:792 commands/tablecmds.c:2623 #, c-format msgid "relation \"%s\" already exists" msgstr "отношение \"%s\" уже ÑущеÑтвует" -#: catalog/heap.c:1083 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 @@ -4259,7 +4004,7 @@ msgstr "значение OID кучи в pg_class не задано в режи msgid "check constraint \"%s\" already exists" msgstr "ограничение-проверка \"%s\" уже ÑущеÑтвует" -#: catalog/heap.c:2456 catalog/pg_constraint.c:654 commands/tablecmds.c:6069 +#: 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\" уже ÑущеÑтвует" @@ -4301,14 +4046,14 @@ msgstr "в выражении по умолчанию Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылат msgid "default expression must not return a set" msgstr "выражение по умолчанию не может возвращать множеÑтво" -#: catalog/heap.c:2625 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: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 +#: parser/parse_target.c:799 rewrite/rewriteHandler.c:1120 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Перепишите выражение или преобразуйте его тип." @@ -4347,7 +4092,7 @@ 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 +#: 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\" не может иметь неÑколько первичных ключей" @@ -4376,7 +4121,7 @@ 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 +#: parser/parse_utilcmd.c:192 #, c-format msgid "relation \"%s\" already exists, skipping" msgstr "отношение \"%s\" уже ÑущеÑтвует, пропуÑкаетÑÑ" @@ -4407,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 @@ -4440,13 +4179,13 @@ msgid "relation \"%s.%s\" does not exist" msgstr "отношение \"%s.%s\" не ÑущеÑтвует" #: catalog/namespace.c:419 parser/parse_relation.c:1151 -#: parser/parse_relation.c:1159 utils/adt/regproc.c:1034 +#: 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:1383 -#: commands/extension.c:1389 +#: 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 "Ñхема Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² не выбрана" @@ -4493,7 +4232,7 @@ 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:13450 gram.y:14819 +#: gram.y:13463 gram.y:14832 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "неверное полное Ð¸Ð¼Ñ (Ñлишком много компонентов): %s" @@ -4541,8 +4280,8 @@ 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:9875 @@ -4558,7 +4297,7 @@ msgstr "Ð¸Ð¼Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа не может быть ÑоÑтав msgid "database name cannot be qualified" msgstr "Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных не может быть ÑоÑтавным" -#: catalog/objectaddress.c:1071 commands/extension.c:2507 +#: catalog/objectaddress.c:1071 commands/extension.c:2510 #, c-format msgid "extension name cannot be qualified" msgstr "Ð¸Ð¼Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ðµ может быть ÑоÑтавным" @@ -4594,25 +4333,25 @@ 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 +#: commands/tablecmds.c:8031 #, 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 +#: 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:236 -#: commands/tablecmds.c:12164 +#: commands/tablecmds.c:12178 #, c-format msgid "\"%s\" is not a materialized view" msgstr "\"%s\" - Ñто не материализованное предÑтавление" #: catalog/objectaddress.c:1231 commands/tablecmds.c:254 -#: commands/tablecmds.c:4380 commands/tablecmds.c:12169 +#: commands/tablecmds.c:4380 commands/tablecmds.c:12183 #, c-format msgid "\"%s\" is not a foreign table" msgstr "\"%s\" - Ñто не ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" @@ -4629,9 +4368,9 @@ msgstr "" "значение по умолчанию Ð´Ð»Ñ Ñтолбца \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" не ÑущеÑтвует" #: catalog/objectaddress.c:1512 commands/functioncmds.c:128 -#: commands/tablecmds.c:246 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\" не ÑущеÑтвует" @@ -4641,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:2302 +#: catalog/objectaddress.c:2306 #, c-format msgid "unrecognized object type \"%s\"" msgstr "нераÑпознанный тип объекта \"%s\"" -#: catalog/objectaddress.c:2497 +#: catalog/objectaddress.c:2501 #, c-format msgid " column %s" msgstr " Ñтолбец %s" -#: catalog/objectaddress.c:2503 +#: catalog/objectaddress.c:2507 #, c-format msgid "function %s" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s" -#: catalog/objectaddress.c:2508 +#: catalog/objectaddress.c:2512 #, c-format msgid "type %s" msgstr "тип %s" -#: catalog/objectaddress.c:2538 +#: catalog/objectaddress.c:2542 #, c-format msgid "cast from %s to %s" msgstr "приведение %s к %s" -#: catalog/objectaddress.c:2558 +#: catalog/objectaddress.c:2562 #, c-format msgid "collation %s" msgstr "правило Ñортировки %s" -#: catalog/objectaddress.c:2582 +#: catalog/objectaddress.c:2586 #, c-format msgid "constraint %s on %s" msgstr "ограничение %s в отношении %s" -#: catalog/objectaddress.c:2588 +#: catalog/objectaddress.c:2592 #, c-format msgid "constraint %s" msgstr "ограничение %s" -#: catalog/objectaddress.c:2605 +#: catalog/objectaddress.c:2609 #, c-format msgid "conversion %s" msgstr "преобразование %s" -#: catalog/objectaddress.c:2642 +#: catalog/objectaddress.c:2646 #, c-format msgid "default for %s" msgstr "значение по умолчанию, %s" -#: catalog/objectaddress.c:2651 +#: catalog/objectaddress.c:2655 #, c-format msgid "language %s" msgstr "Ñзык %s" -#: catalog/objectaddress.c:2656 +#: catalog/objectaddress.c:2660 #, c-format msgid "large object %u" msgstr "большой объект %u" -#: catalog/objectaddress.c:2661 +#: catalog/objectaddress.c:2665 #, c-format msgid "operator %s" msgstr "оператор %s" -#: catalog/objectaddress.c:2693 +#: catalog/objectaddress.c:2697 #, c-format msgid "operator class %s for access method %s" msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² %s Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа %s" @@ -4806,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:2743 +#: catalog/objectaddress.c:2747 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "оператор %d (%s, %s) из ÑемейÑтва \"%s\": %s" @@ -4815,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:2793 +#: catalog/objectaddress.c:2797 #, c-format msgid "function %d (%s, %s) of %s: %s" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %d (%s, %s) из ÑемейÑтва \"%s\": %s" -#: catalog/objectaddress.c:2833 +#: catalog/objectaddress.c:2837 #, c-format msgid "rule %s on " msgstr "правило %s Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ: " -#: catalog/objectaddress.c:2855 +#: catalog/objectaddress.c:2859 #, c-format msgid "transform for %s language %s" msgstr "преобразование Ð´Ð»Ñ %s, Ñзыка %s" -#: catalog/objectaddress.c:2889 +#: catalog/objectaddress.c:2893 #, c-format msgid "trigger %s on " msgstr "триггер %s в отношении: " -#: catalog/objectaddress.c:2906 +#: catalog/objectaddress.c:2910 #, c-format msgid "schema %s" msgstr "Ñхема %s" -#: catalog/objectaddress.c:2919 +#: catalog/objectaddress.c:2923 #, c-format msgid "text search parser %s" msgstr "анализатор текÑтового поиÑка %s" -#: catalog/objectaddress.c:2934 +#: catalog/objectaddress.c:2938 #, c-format msgid "text search dictionary %s" msgstr "Ñловарь текÑтового поиÑка %s" -#: catalog/objectaddress.c:2949 +#: catalog/objectaddress.c:2953 #, c-format msgid "text search template %s" msgstr "шаблон текÑтового поиÑка %s" -#: catalog/objectaddress.c:2964 +#: catalog/objectaddress.c:2968 #, c-format msgid "text search configuration %s" msgstr "ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка %s" -#: catalog/objectaddress.c:2972 +#: catalog/objectaddress.c:2976 #, c-format msgid "role %s" msgstr "роль %s" -#: catalog/objectaddress.c:2985 +#: catalog/objectaddress.c:2989 #, c-format msgid "database %s" msgstr "база данных %s" -#: catalog/objectaddress.c:2997 +#: catalog/objectaddress.c:3001 #, c-format msgid "tablespace %s" msgstr "табличное проÑтранÑтво %s" -#: catalog/objectaddress.c:3006 +#: catalog/objectaddress.c:3010 #, c-format msgid "foreign-data wrapper %s" msgstr "обёртка Ñторонних данных %s" -#: catalog/objectaddress.c:3015 +#: catalog/objectaddress.c:3019 #, c-format msgid "server %s" msgstr "Ñервер %s" -#: catalog/objectaddress.c:3043 +#: catalog/objectaddress.c:3047 #, c-format msgid "user mapping for %s on server %s" msgstr "ÑопоÑтавление Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s на Ñервере %s" -#: catalog/objectaddress.c:3078 +#: catalog/objectaddress.c:3082 #, c-format msgid "default privileges on new relations belonging to role %s" msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… отношений, принадлежащих роли %s" -#: catalog/objectaddress.c:3083 +#: catalog/objectaddress.c:3087 #, c-format msgid "default privileges on new sequences belonging to role %s" msgstr "" "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… поÑледовательноÑтей, принадлежащих роли %s" -#: catalog/objectaddress.c:3088 +#: catalog/objectaddress.c:3092 #, c-format msgid "default privileges on new functions belonging to role %s" msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… функций, принадлежащих роли %s" -#: catalog/objectaddress.c:3093 +#: catalog/objectaddress.c:3097 #, c-format msgid "default privileges on new types belonging to role %s" msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… типов, принадлежащих роли %s" -#: catalog/objectaddress.c:3099 +#: catalog/objectaddress.c:3103 #, c-format msgid "default privileges belonging to role %s" msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… объектов, принадлежащих роли %s" -#: catalog/objectaddress.c:3107 +#: catalog/objectaddress.c:3111 #, c-format msgid " in schema %s" msgstr " в Ñхеме %s" -#: catalog/objectaddress.c:3124 +#: catalog/objectaddress.c:3128 #, c-format msgid "extension %s" msgstr "раÑширение %s" -#: catalog/objectaddress.c:3137 +#: catalog/objectaddress.c:3141 #, c-format msgid "event trigger %s" msgstr "Ñобытийный триггер %s" -#: catalog/objectaddress.c:3169 +#: catalog/objectaddress.c:3173 #, c-format msgid "policy %s on " msgstr "политика %s Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ " -#: catalog/objectaddress.c:3187 +#: catalog/objectaddress.c:3191 #, c-format msgid "access method %s" msgstr "метод доÑтупа %s" -#: catalog/objectaddress.c:3247 +#: catalog/objectaddress.c:3251 #, c-format msgid "table %s" msgstr "таблица %s" -#: catalog/objectaddress.c:3251 +#: catalog/objectaddress.c:3255 #, c-format msgid "index %s" msgstr "Ð¸Ð½Ð´ÐµÐºÑ %s" -#: catalog/objectaddress.c:3255 +#: catalog/objectaddress.c:3259 #, c-format msgid "sequence %s" msgstr "поÑледовательноÑть %s" -#: catalog/objectaddress.c:3259 +#: catalog/objectaddress.c:3263 #, c-format msgid "toast table %s" msgstr "TOAST-таблица %s" -#: catalog/objectaddress.c:3263 +#: catalog/objectaddress.c:3267 #, c-format msgid "view %s" msgstr "предÑтавление %s" -#: catalog/objectaddress.c:3267 +#: catalog/objectaddress.c:3271 #, c-format msgid "materialized view %s" msgstr "материализованное предÑтавление %s" -#: catalog/objectaddress.c:3271 +#: catalog/objectaddress.c:3275 #, c-format msgid "composite type %s" msgstr "ÑоÑтавной тип %s" -#: catalog/objectaddress.c:3275 +#: catalog/objectaddress.c:3279 #, c-format msgid "foreign table %s" msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° %s" -#: catalog/objectaddress.c:3280 +#: catalog/objectaddress.c:3284 #, c-format msgid "relation %s" msgstr "отношение %s" -#: catalog/objectaddress.c:3317 +#: catalog/objectaddress.c:3321 #, c-format msgid "operator family %s for access method %s" msgstr "ÑемейÑтво операторов %s Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа %s" @@ -5069,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 @@ -5201,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:3029 +#: catalog/pg_depend.c:165 commands/extension.c:3032 #, c-format msgid "%s is already a member of extension \"%s\"" msgstr "%s уже отноÑитÑÑ Ðº раÑширению \"%s\"" @@ -5538,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:4359 -#: commands/tablecmds.c:12047 +#: commands/tablecmds.c:12061 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "\"%s\" - Ñто не таблица и не материализованное предÑтавление" @@ -5720,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" @@ -5819,7 +5557,7 @@ msgstr "" "пропуÑкаетÑÑ Ð°Ð½Ð°Ð»Ð¸Ð· дерева наÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ \"%s.%s\" --- Ñто дерево " "наÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ Ñодержит анализируемых дочерних таблиц" -#: commands/analyze.c:1420 commands/tablecmds.c:8079 executor/execQual.c:2927 +#: commands/analyze.c:1420 commands/tablecmds.c:8093 executor/execQual.c:2927 msgid "could not convert row type" msgstr "не удалоÑÑŒ преобразовать тип Ñтроки" @@ -5883,7 +5621,7 @@ msgstr "клаÑтеризовать временные таблицы друг msgid "there is no previously clustered index for table \"%s\"" msgstr "таблица \"%s\" ранее не клаÑтеризовалаÑÑŒ по какому-либо индекÑу" -#: commands/cluster.c:173 commands/tablecmds.c:9383 commands/tablecmds.c:11143 +#: 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\" не ÑущеÑтвует" @@ -5898,7 +5636,7 @@ msgstr "клаÑтеризовать разделÑемый каталог не msgid "cannot vacuum temporary tables of other sessions" msgstr "очищать временные таблицы других ÑеанÑов нельзÑ" -#: commands/cluster.c:431 commands/tablecmds.c:11153 +#: commands/cluster.c:431 commands/tablecmds.c:11167 #, c-format msgid "\"%s\" is not an index for table \"%s\"" msgstr "\"%s\" не ÑвлÑетÑÑ Ð¸Ð½Ð´ÐµÐºÑом таблицы \"%s\"" @@ -5921,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" @@ -5945,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" @@ -5989,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:753 +#: 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 " @@ -6055,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 "неожиданный обрыв ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼ при открытой транзакции" @@ -6100,307 +5838,307 @@ msgstr "COPY FROM не поддерживаетÑÑ Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ð¾Ð¹ на ур msgid "Use INSERT statements instead." msgstr "ИÑпользуйте операторы INSERT." -#: commands/copy.c:1058 +#: commands/copy.c:1059 #, 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 +#: 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:1190 +#: commands/copy.c:1191 #, 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 +#: commands/copy.c:1197 commands/dbcommands.c:232 commands/dbcommands.c:1427 #, c-format msgid "option \"%s\" not recognized" msgstr "параметр \"%s\" не раÑпознан" -#: commands/copy.c:1207 +#: commands/copy.c:1208 #, c-format msgid "cannot specify DELIMITER in BINARY mode" msgstr "в режиме BINARY Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ DELIMITER" -#: commands/copy.c:1212 +#: commands/copy.c:1213 #, c-format msgid "cannot specify NULL in BINARY mode" msgstr "в режиме BINARY Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ NULL" -#: commands/copy.c:1234 +#: commands/copy.c:1235 #, c-format msgid "COPY delimiter must be a single one-byte character" msgstr "разделитель Ð´Ð»Ñ COPY должен быть однобайтным Ñимволом" -#: commands/copy.c:1241 +#: commands/copy.c:1242 #, c-format msgid "COPY delimiter cannot be newline or carriage return" msgstr "" "разделителем Ð´Ð»Ñ COPY не может быть Ñимвол новой Ñтроки или возврата каретки" -#: commands/copy.c:1247 +#: commands/copy.c:1248 #, c-format msgid "COPY null representation cannot use newline or carriage return" msgstr "" "предÑтавление NULL Ð´Ð»Ñ COPY не может включать Ñимвол новой Ñтроки или " "возврата каретки" -#: commands/copy.c:1264 +#: commands/copy.c:1265 #, c-format msgid "COPY delimiter cannot be \"%s\"" msgstr "\"%s\" не может быть разделителем Ð´Ð»Ñ COPY" -#: commands/copy.c:1270 +#: commands/copy.c:1271 #, c-format msgid "COPY HEADER available only in CSV mode" msgstr "COPY HEADER можно иÑпользовать только в режиме CSV" -#: commands/copy.c:1276 +#: commands/copy.c:1277 #, c-format msgid "COPY quote available only in CSV mode" msgstr "определить кавычки Ð´Ð»Ñ COPY можно только в режиме CSV" -#: commands/copy.c:1281 +#: commands/copy.c:1282 #, c-format msgid "COPY quote must be a single one-byte character" msgstr "Ñимвол кавычек Ð´Ð»Ñ COPY должен быть однобайтным" -#: commands/copy.c:1286 +#: commands/copy.c:1287 #, c-format msgid "COPY delimiter and quote must be different" msgstr "Ñимвол кавычек Ð´Ð»Ñ COPY должен отличатьÑÑ Ð¾Ñ‚ разделителÑ" -#: commands/copy.c:1292 +#: commands/copy.c:1293 #, c-format msgid "COPY escape available only in CSV mode" msgstr "определить ÑпецÑимвол Ð´Ð»Ñ COPY можно только в режиме CSV" -#: commands/copy.c:1297 +#: commands/copy.c:1298 #, c-format msgid "COPY escape must be a single one-byte character" msgstr "ÑпецÑимвол Ð´Ð»Ñ COPY должен быть однобайтным" -#: commands/copy.c:1303 +#: commands/copy.c:1304 #, c-format msgid "COPY force quote available only in CSV mode" msgstr "параметр force quote Ð´Ð»Ñ COPY можно иÑпользовать только в режиме CSV" -#: commands/copy.c:1307 +#: commands/copy.c:1308 #, c-format msgid "COPY force quote only available using COPY TO" msgstr "параметр force quote Ð´Ð»Ñ COPY можно иÑпользовать только Ñ COPY TO" -#: commands/copy.c:1313 +#: 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:1317 +#: 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:1323 +#: commands/copy.c:1324 #, c-format msgid "COPY force null available only in CSV mode" msgstr "параметр force null Ð´Ð»Ñ COPY можно иÑпользовать только в режиме CSV" -#: commands/copy.c:1328 +#: commands/copy.c:1329 #, c-format msgid "COPY force null only available using COPY FROM" msgstr "параметр force null Ð´Ð»Ñ COPY можно иÑпользовать только Ñ COPY FROM" -#: commands/copy.c:1334 +#: commands/copy.c:1335 #, c-format msgid "COPY delimiter must not appear in the NULL specification" msgstr "разделитель Ð´Ð»Ñ COPY не должен приÑутÑтвовать в предÑтавлении NULL" -#: commands/copy.c:1341 +#: commands/copy.c:1342 #, c-format msgid "CSV quote character must not appear in the NULL specification" msgstr "Ñимвол кавычек в CSV не должен приÑутÑтвовать в предÑтавлении NULL" -#: commands/copy.c:1402 +#: commands/copy.c:1403 #, c-format msgid "table \"%s\" does not have OIDs" msgstr "таблица \"%s\" не Ñодержит OID" -#: commands/copy.c:1419 +#: commands/copy.c:1420 #, c-format msgid "COPY (query) WITH OIDS is not supported" msgstr "COPY (запроÑ) WITH OIDS не поддерживаетÑÑ" -#: commands/copy.c:1439 +#: commands/copy.c:1440 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for COPY" msgstr "правила DO INSTEAD NOTHING не поддерживаютÑÑ Ñ COPY" -#: commands/copy.c:1453 +#: commands/copy.c:1454 #, c-format msgid "conditional DO INSTEAD rules are not supported for COPY" msgstr "уÑловные правила DO INSTEAD не поддерживаютÑÑ Ñ COPY" -#: commands/copy.c:1457 +#: commands/copy.c:1458 #, c-format msgid "DO ALSO rules are not supported for the COPY" msgstr "правила DO ALSO не поддерживаютÑÑ Ñ COPY" -#: commands/copy.c:1462 +#: commands/copy.c:1463 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for COPY" msgstr "ÑоÑтавные правила DO INSTEAD не поддерживаютÑÑ Ñ COPY" -#: commands/copy.c:1472 +#: commands/copy.c:1473 #, c-format msgid "COPY (SELECT INTO) is not supported" msgstr "COPY (SELECT INTO) не поддерживаетÑÑ" -#: commands/copy.c:1489 +#: commands/copy.c:1490 #, c-format msgid "COPY query must have a RETURNING clause" msgstr "в запроÑе COPY должно быть предложение RETURNING" -#: commands/copy.c:1517 +#: commands/copy.c:1518 #, c-format msgid "relation referenced by COPY statement has changed" msgstr "отношение, задейÑтвованное в операторе COPY, изменилоÑÑŒ" -#: commands/copy.c:1575 +#: commands/copy.c:1576 #, c-format msgid "FORCE_QUOTE column \"%s\" not referenced by COPY" msgstr "Ñтолбец FORCE_QUOTE \"%s\" не фигурирует в COPY" -#: commands/copy.c:1597 +#: 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:1619 +#: commands/copy.c:1620 #, c-format msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "Ñтолбец FORCE_NULL \"%s\" не фигурирует в COPY" -#: commands/copy.c:1684 +#: commands/copy.c:1685 #, c-format msgid "could not close pipe to external command: %m" msgstr "не удалоÑÑŒ закрыть канал Ñообщений Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ¹ командой: %m" -#: commands/copy.c:1688 +#: commands/copy.c:1689 #, c-format msgid "program \"%s\" failed" msgstr "Ñбой программы \"%s\"" -#: commands/copy.c:1738 +#: commands/copy.c:1739 #, c-format msgid "cannot copy from view \"%s\"" msgstr "копировать из предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ" -#: commands/copy.c:1740 commands/copy.c:1746 commands/copy.c:1752 +#: 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:1744 +#: commands/copy.c:1745 #, c-format msgid "cannot copy from materialized view \"%s\"" msgstr "копировать из материализованного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ" -#: commands/copy.c:1750 +#: commands/copy.c:1751 #, c-format msgid "cannot copy from foreign table \"%s\"" msgstr "копировать из Ñторонней таблицы \"%s\" нельзÑ" -#: commands/copy.c:1756 +#: commands/copy.c:1757 #, c-format msgid "cannot copy from sequence \"%s\"" msgstr "копировать из поÑледовательноÑти \"%s\" нельзÑ" -#: commands/copy.c:1761 +#: commands/copy.c:1762 #, c-format msgid "cannot copy from non-table relation \"%s\"" msgstr "копировать из Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\", не ÑвлÑющегоÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹, нельзÑ" -#: commands/copy.c:1786 commands/copy.c:2822 +#: commands/copy.c:1787 commands/copy.c:2823 #, c-format msgid "could not execute command \"%s\": %m" msgstr "не удалоÑÑŒ выполнить команду \"%s\": %m" -#: commands/copy.c:1801 +#: commands/copy.c:1802 #, c-format msgid "relative path not allowed for COPY to file" msgstr "при выполнении COPY в файл Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ отноÑительный путь" -#: commands/copy.c:1809 +#: commands/copy.c:1810 #, c-format msgid "could not open file \"%s\" for writing: %m" msgstr "не удалоÑÑŒ открыть файл \"%s\" Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи: %m" -#: commands/copy.c:1821 commands/copy.c:2845 +#: commands/copy.c:1822 commands/copy.c:2846 #, c-format msgid "\"%s\" is a directory" msgstr "\"%s\" - Ñто каталог" -#: commands/copy.c:2144 +#: commands/copy.c:2145 #, c-format msgid "COPY %s, line %d, column %s" msgstr "COPY %s, Ñтрока %d, Ñтолбец %s" -#: commands/copy.c:2148 commands/copy.c:2195 +#: commands/copy.c:2149 commands/copy.c:2196 #, c-format msgid "COPY %s, line %d" msgstr "COPY %s, Ñтрока %d" -#: commands/copy.c:2159 +#: commands/copy.c:2160 #, c-format msgid "COPY %s, line %d, column %s: \"%s\"" msgstr "COPY %s, Ñтрока %d, Ñтолбец %s: \"%s\"" -#: commands/copy.c:2167 +#: commands/copy.c:2168 #, c-format msgid "COPY %s, line %d, column %s: null input" msgstr "COPY %s, Ñтрока %d, Ñтолбец %s: значение NULL" -#: commands/copy.c:2189 +#: commands/copy.c:2190 #, c-format msgid "COPY %s, line %d: \"%s\"" msgstr "COPY %s, Ñтрока %d: \"%s\"" -#: commands/copy.c:2273 +#: commands/copy.c:2274 #, c-format msgid "cannot copy to view \"%s\"" msgstr "копировать в предÑтавление \"%s\" нельзÑ" -#: commands/copy.c:2278 +#: commands/copy.c:2279 #, c-format msgid "cannot copy to materialized view \"%s\"" msgstr "копировать в материализованное предÑтавление \"%s\" нельзÑ" -#: commands/copy.c:2283 +#: commands/copy.c:2284 #, c-format msgid "cannot copy to foreign table \"%s\"" msgstr "копировать в Ñтороннюю таблицу \"%s\" нельзÑ" -#: commands/copy.c:2288 +#: commands/copy.c:2289 #, c-format msgid "cannot copy to sequence \"%s\"" msgstr "копировать в поÑледовательноÑть \"%s\" нельзÑ" -#: commands/copy.c:2293 +#: commands/copy.c:2294 #, c-format msgid "cannot copy to non-table relation \"%s\"" msgstr "копировать в отношение \"%s\", не ÑвлÑющееÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹, нельзÑ" -#: commands/copy.c:2356 +#: commands/copy.c:2357 #, c-format msgid "cannot perform FREEZE because of prior transaction activity" msgstr "выполнить FREEZE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·-за предыдущей активноÑти в транзакции" -#: commands/copy.c:2362 +#: commands/copy.c:2363 #, c-format msgid "" "cannot perform FREEZE because the table was not created or truncated in the " @@ -6409,144 +6147,144 @@ msgstr "" "выполнить FREEZE нельзÑ, так как таблица не была Ñоздана или уÑечена в " "текущей подтранзакции" -#: commands/copy.c:2865 +#: commands/copy.c:2866 #, c-format msgid "COPY file signature not recognized" msgstr "подпиÑÑŒ COPY-файла не раÑпознана" -#: commands/copy.c:2870 +#: commands/copy.c:2871 #, c-format msgid "invalid COPY file header (missing flags)" msgstr "неверный заголовок файла COPY (отÑутÑтвуют флаги)" -#: commands/copy.c:2876 +#: commands/copy.c:2877 #, c-format msgid "unrecognized critical flags in COPY file header" msgstr "не раÑпознаны важные флаги в заголовке файла COPY" -#: commands/copy.c:2882 +#: commands/copy.c:2883 #, c-format msgid "invalid COPY file header (missing length)" msgstr "неверный заголовок файла COPY (отÑутÑтвует длина)" -#: commands/copy.c:2889 +#: commands/copy.c:2890 #, c-format msgid "invalid COPY file header (wrong length)" msgstr "неверный заголовок файла COPY (Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð°)" -#: commands/copy.c:3022 commands/copy.c:3729 commands/copy.c:3959 +#: 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:3032 +#: commands/copy.c:3033 #, c-format msgid "missing data for OID column" msgstr "нет данных Ð´Ð»Ñ Ñтолбца OID" -#: commands/copy.c:3038 +#: commands/copy.c:3039 #, c-format msgid "null OID in COPY data" msgstr "неверное значение OID (NULL) в данных COPY" -#: commands/copy.c:3048 commands/copy.c:3171 +#: commands/copy.c:3049 commands/copy.c:3172 #, c-format msgid "invalid OID in COPY data" msgstr "неверный OID в данных COPY" -#: commands/copy.c:3063 +#: commands/copy.c:3064 #, c-format msgid "missing data for column \"%s\"" msgstr "нет данных Ð´Ð»Ñ Ñтолбца \"%s\"" -#: commands/copy.c:3146 +#: commands/copy.c:3147 #, c-format msgid "received copy data after EOF marker" msgstr "поÑле маркера конца файла продолжаютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ COPY" -#: commands/copy.c:3153 +#: commands/copy.c:3154 #, c-format msgid "row field count is %d, expected %d" msgstr "количеÑтво полей в Ñтроке: %d, ожидалоÑÑŒ: %d" -#: commands/copy.c:3493 commands/copy.c:3510 +#: commands/copy.c:3494 commands/copy.c:3511 #, c-format msgid "literal carriage return found in data" msgstr "в данных обнаружен Ñвный возврат каретки" -#: commands/copy.c:3494 commands/copy.c:3511 +#: commands/copy.c:3495 commands/copy.c:3512 #, c-format msgid "unquoted carriage return found in data" msgstr "в данных обнаружен возврат каретки не в кавычках" -#: commands/copy.c:3496 commands/copy.c:3513 +#: commands/copy.c:3497 commands/copy.c:3514 #, c-format msgid "Use \"\\r\" to represent carriage return." msgstr "ПредÑтавьте возврат каретки как \"\\r\"." -#: commands/copy.c:3497 commands/copy.c:3514 +#: commands/copy.c:3498 commands/copy.c:3515 #, c-format msgid "Use quoted CSV field to represent carriage return." msgstr "Заключите возврат каретки в кавычки CSV." -#: commands/copy.c:3526 +#: commands/copy.c:3527 #, c-format msgid "literal newline found in data" msgstr "в данных обнаружен Ñвный Ñимвол новой Ñтроки" -#: commands/copy.c:3527 +#: commands/copy.c:3528 #, c-format msgid "unquoted newline found in data" msgstr "в данных обнаружен Ñвный Ñимвол новой Ñтроки не в кавычках" -#: commands/copy.c:3529 +#: commands/copy.c:3530 #, c-format msgid "Use \"\\n\" to represent newline." msgstr "ПредÑтавьте Ñимвол новой Ñтроки как \"\\n\"." -#: commands/copy.c:3530 +#: commands/copy.c:3531 #, c-format msgid "Use quoted CSV field to represent newline." msgstr "Заключите Ñимвол новой Ñтроки в кавычки CSV." -#: commands/copy.c:3576 commands/copy.c:3612 +#: 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:3585 commands/copy.c:3601 +#: commands/copy.c:3586 commands/copy.c:3602 #, c-format msgid "end-of-copy marker corrupt" msgstr "маркер \"конец копии\" иÑпорчен" -#: commands/copy.c:4043 +#: commands/copy.c:4044 #, c-format msgid "unterminated CSV quoted field" msgstr "незавершённое поле в кавычках CSV" -#: commands/copy.c:4120 commands/copy.c:4139 +#: commands/copy.c:4121 commands/copy.c:4140 #, c-format msgid "unexpected EOF in COPY data" msgstr "неожиданный конец данных COPY" -#: commands/copy.c:4129 +#: commands/copy.c:4130 #, c-format msgid "invalid field size" msgstr "неверный размер полÑ" -#: commands/copy.c:4152 +#: commands/copy.c:4153 #, c-format msgid "incorrect binary data format" msgstr "неверный двоичный формат данных" -#: commands/copy.c:4463 commands/indexcmds.c:1053 commands/tablecmds.c:1464 +#: 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:4470 commands/tablecmds.c:1490 commands/trigger.c:651 +#: 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" @@ -6862,7 +6600,7 @@ msgid "invalid argument for %s: \"%s\"" msgstr "неверный аргумент Ð´Ð»Ñ %s: \"%s\"" #: commands/dropcmds.c:112 commands/functioncmds.c:1203 -#: utils/adt/ruleutils.c:2080 +#: utils/adt/ruleutils.c:2083 #, c-format msgid "\"%s\" is an aggregate function" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" ÑвлÑетÑÑ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð¾Ð¹" @@ -6874,7 +6612,7 @@ 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 +#: commands/tablecmds.c:11538 tcop/utility.c:1119 #, c-format msgid "relation \"%s\" does not exist, skipping" msgstr "отношение \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" @@ -7090,7 +6828,7 @@ msgstr "параметр BUFFERS оператора EXPLAIN требует ук msgid "EXPLAIN option TIMING requires ANALYZE" msgstr "параметр TIMING оператора EXPLAIN требует ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ ANALYZE" -#: commands/extension.c:155 commands/extension.c:2719 +#: commands/extension.c:155 commands/extension.c:2722 #, c-format msgid "extension \"%s\" does not exist" msgstr "раÑширение \"%s\" не ÑущеÑтвует" @@ -7180,33 +6918,33 @@ msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" msgstr "" "параметр \"schema\" не может быть указан вмеÑте Ñ \"relocatable\" = true" -#: commands/extension.c:722 +#: commands/extension.c:725 #, c-format msgid "" "transaction control statements are not allowed within an extension script" msgstr "в Ñкрипте раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ðµ должно быть операторов ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñми" -#: commands/extension.c:790 +#: commands/extension.c:793 #, c-format msgid "permission denied to create extension \"%s\"" msgstr "нет прав на Ñоздание раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/extension.c:792 +#: commands/extension.c:795 #, c-format msgid "Must be superuser to create this extension." msgstr "Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñтого раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾ быть Ñуперпользователем." -#: commands/extension.c:796 +#: commands/extension.c:799 #, c-format msgid "permission denied to update extension \"%s\"" msgstr "нет прав на изменение раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/extension.c:798 +#: commands/extension.c:801 #, c-format msgid "Must be superuser to update this extension." msgstr "Ð”Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾ быть Ñуперпользователем." -#: commands/extension.c:1080 +#: commands/extension.c:1083 #, c-format msgid "" "extension \"%s\" has no update path from version \"%s\" to version \"%s\"" @@ -7214,64 +6952,64 @@ msgstr "" "Ð´Ð»Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\" не определён путь Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð²ÐµÑ€Ñии \"%s\" до верÑии " "\"%s\"" -#: commands/extension.c:1262 commands/extension.c:2779 +#: commands/extension.c:1265 commands/extension.c:2782 #, c-format msgid "version to install must be specified" msgstr "нужно указать верÑию Ð´Ð»Ñ ÑƒÑтановки" -#: commands/extension.c:1279 +#: commands/extension.c:1282 #, c-format msgid "FROM version must be different from installation target version \"%s\"" msgstr "верÑÐ¸Ñ FROM должна отличатьÑÑ Ð¾Ñ‚ уÑтанавливаемой верÑии \"%s\"" -#: commands/extension.c:1344 +#: commands/extension.c:1347 #, c-format msgid "extension \"%s\" must be installed in schema \"%s\"" msgstr "раÑширение \"%s\" должно уÑтанавливатьÑÑ Ð² Ñхему \"%s\"" -#: commands/extension.c:1436 +#: commands/extension.c:1439 #, c-format msgid "cyclic dependency detected between extensions \"%s\" and \"%s\"" msgstr "выÑвлена цикличеÑÐºÐ°Ñ Ð·Ð°Ð²Ð¸ÑимоÑть между раÑширениÑми \"%s\" и \"%s\"" -#: commands/extension.c:1441 +#: commands/extension.c:1444 #, c-format msgid "installing required extension \"%s\"" msgstr "уÑтановка требуемого раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/extension.c:1469 commands/extension.c:2924 +#: commands/extension.c:1472 commands/extension.c:2927 #, c-format msgid "required extension \"%s\" is not installed" msgstr "требуемое раÑширение \"%s\" не уÑтановлено" -#: commands/extension.c:1471 +#: commands/extension.c:1474 #, c-format msgid "Use CREATE EXTENSION ... CASCADE to install required extensions too." msgstr "" "Выполните CREATE EXTENSION ... CASCADE, чтобы уÑтановить также требуемые " "раÑширениÑ." -#: commands/extension.c:1535 +#: commands/extension.c:1538 #, c-format msgid "extension \"%s\" already exists, skipping" msgstr "раÑширение \"%s\" уже ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/extension.c:1542 +#: commands/extension.c:1545 #, c-format msgid "extension \"%s\" already exists" msgstr "раÑширение \"%s\" уже ÑущеÑтвует" -#: commands/extension.c:1553 +#: commands/extension.c:1556 #, c-format msgid "nested CREATE EXTENSION is not supported" msgstr "вложенные операторы CREATE EXTENSION не поддерживаютÑÑ" -#: commands/extension.c:1681 +#: commands/extension.c:1684 #, c-format msgid "cannot drop extension \"%s\" because it is being modified" msgstr "удалить раÑширение \"%s\" нельзÑ, так как Ñто модифицируемый объект" -#: commands/extension.c:2152 +#: commands/extension.c:2155 #, c-format msgid "" "pg_extension_config_dump() can only be called from an SQL script executed by " @@ -7280,17 +7018,17 @@ msgstr "" "функцию pg_extension_config_dump() можно вызывать только из SQL-Ñкрипта, " "запуÑкаемого в CREATE EXTENSION" -#: commands/extension.c:2164 +#: commands/extension.c:2167 #, c-format msgid "OID %u does not refer to a table" msgstr "OID %u не отноÑитÑÑ Ðº таблице" -#: commands/extension.c:2169 +#: commands/extension.c:2172 #, c-format msgid "table \"%s\" is not a member of the extension being created" msgstr "таблица \"%s\" не отноÑитÑÑ Ðº Ñозданному раÑширению" -#: commands/extension.c:2534 +#: commands/extension.c:2537 #, c-format msgid "" "cannot move extension \"%s\" into schema \"%s\" because the extension " @@ -7299,27 +7037,27 @@ msgstr "" "перемеÑтить раÑширение \"%s\" в Ñхему \"%s\" нельзÑ, так как оно Ñодержит " "Ñхему" -#: commands/extension.c:2574 commands/extension.c:2637 +#: 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:2639 +#: commands/extension.c:2642 #, c-format msgid "%s is not in the extension's schema \"%s\"" msgstr "объект %s не принадлежит Ñхеме раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/extension.c:2699 +#: commands/extension.c:2702 #, c-format msgid "nested ALTER EXTENSION is not supported" msgstr "вложенные операторы ALTER EXTENSION не поддерживаютÑÑ" -#: commands/extension.c:2790 +#: commands/extension.c:2793 #, c-format msgid "version \"%s\" of extension \"%s\" is already installed" msgstr "верÑÐ¸Ñ \"%s\" раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\" уже уÑтановлена" -#: commands/extension.c:3041 +#: commands/extension.c:3044 #, c-format msgid "" "cannot add schema \"%s\" to extension \"%s\" because the schema contains the " @@ -7328,12 +7066,12 @@ msgstr "" "добавить Ñхему \"%s\" к раÑширению \"%s\" нельзÑ, так как Ñхема Ñодержит " "раÑширение" -#: commands/extension.c:3069 +#: commands/extension.c:3072 #, c-format msgid "%s is not a member of extension \"%s\"" msgstr "%s не отноÑитÑÑ Ðº раÑширению \"%s\"" -#: commands/extension.c:3135 +#: commands/extension.c:3138 #, c-format msgid "file \"%s\" is too large" msgstr "файл \"%s\" Ñлишком большой" @@ -7410,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 @@ -7426,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 @@ -7560,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, чтобы загрузить Ñзык в базу данных." @@ -7593,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 " @@ -7629,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 " @@ -7648,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\" не поддерживает выполнение внедрённого кода" @@ -7808,91 +7547,91 @@ msgstr "Ñоздать Ð¸Ð½Ð´ÐµÐºÑ Ð² Ñторонней таблице \"%s\" msgid "cannot create indexes on temporary tables of other sessions" msgstr "Ñоздавать индекÑÑ‹ во временных таблицах других ÑеанÑов нельзÑ" -#: commands/indexcmds.c:454 commands/tablecmds.c:546 commands/tablecmds.c:9694 +#: 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:1881 +#: 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:2807 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 " @@ -7901,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 " @@ -7927,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\" переиндекÑирована" @@ -8215,8 +7954,8 @@ 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/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 @@ -8269,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\" не ÑущеÑтвует" @@ -8279,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" @@ -8545,7 +8284,7 @@ msgstr "" "Выполните DROP MATERIALIZED VIEW Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð¾Ð³Ð¾ " "предÑтавлениÑ." -#: commands/tablecmds.c:240 parser/parse_utilcmd.c:1630 +#: commands/tablecmds.c:240 parser/parse_utilcmd.c:1631 #, c-format msgid "index \"%s\" does not exist" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑущеÑтвует" @@ -8568,8 +8307,8 @@ msgstr "\"%s\" - Ñто не тип" msgid "Use DROP TYPE to remove a type." msgstr "Выполните DROP TYPE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°." -#: commands/tablecmds.c:252 commands/tablecmds.c:8583 -#: commands/tablecmds.c:11335 +#: commands/tablecmds.c:252 commands/tablecmds.c:8597 +#: commands/tablecmds.c:11349 #, c-format msgid "foreign table \"%s\" does not exist" msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" не ÑущеÑтвует" @@ -8608,30 +8347,30 @@ msgstr "DROP INDEX CONCURRENTLY не поддерживает режим CASCADE #: commands/tablecmds.c:1085 #, c-format msgid "truncate cascades to table \"%s\"" -msgstr "удаление раÑпроÑтранÑетÑÑ Ð½Ð° таблицу %s" +msgstr "опуÑтошение раÑпроÑтранÑетÑÑ Ð½Ð° таблицу %s" #: commands/tablecmds.c:1323 #, c-format msgid "cannot truncate temporary tables of other sessions" -msgstr "временные таблицы других ÑеанÑов Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‡Ð¸Ñтить" +msgstr "временные таблицы других ÑеанÑов Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿ÑƒÑтошить" -#: commands/tablecmds.c:1529 parser/parse_utilcmd.c:1844 +#: 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:1536 commands/tablecmds.c:10150 +#: commands/tablecmds.c:1536 commands/tablecmds.c:10164 #, c-format msgid "cannot inherit from temporary relation \"%s\"" msgstr "временное отношение \"%s\" не может наÑледоватьÑÑ" -#: commands/tablecmds.c:1544 commands/tablecmds.c:10158 +#: commands/tablecmds.c:1544 commands/tablecmds.c:10172 #, c-format msgid "cannot inherit from temporary relation of another session" msgstr "наÑледование от временного Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ ÑеанÑа невозможно" -#: commands/tablecmds.c:1560 commands/tablecmds.c:10192 +#: commands/tablecmds.c:1560 commands/tablecmds.c:10206 #, c-format msgid "relation \"%s\" would be inherited from more than once" msgstr "отношение \"%s\" наÑледуетÑÑ Ð½ÐµÐ¾Ð´Ð½Ð¾ÐºÑ€Ð°Ñ‚Ð½Ð¾" @@ -8661,7 +8400,7 @@ msgid "inherited column \"%s\" has a collation conflict" msgstr "конфликт правил Ñортировки в наÑледованном Ñтолбце \"%s\"" #: commands/tablecmds.c:1629 commands/tablecmds.c:1851 -#: commands/tablecmds.c:4767 +#: commands/tablecmds.c:4780 #, c-format msgid "\"%s\" versus \"%s\"" msgstr "\"%s\" и \"%s\"" @@ -8671,14 +8410,14 @@ msgstr "\"%s\" и \"%s\"" 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 +#: 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:1753 parser/parse_utilcmd.c:924 +#: 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\"." @@ -8823,7 +8562,7 @@ msgstr "проверка таблицы \"%s\"" msgid "column \"%s\" contains null values" msgstr "Ñтолбец \"%s\" Ñодержит Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ NULL" -#: commands/tablecmds.c:4202 commands/tablecmds.c:7385 +#: commands/tablecmds.c:4202 commands/tablecmds.c:7399 #, c-format msgid "check constraint \"%s\" is violated by some row" msgstr "ограничение-проверку \"%s\" нарушает Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñтрока" @@ -8868,7 +8607,7 @@ msgstr "\"%s\" - Ñто не таблица и не ÑтороннÑÑ Ñ‚Ð°Ð±Ð» msgid "\"%s\" is not a table, composite type, or foreign table" msgstr "\"%s\" - Ñто не таблица, ÑоÑтавной тип или ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" -#: commands/tablecmds.c:4374 commands/tablecmds.c:5426 +#: commands/tablecmds.c:4374 commands/tablecmds.c:5439 #, c-format msgid "\"%s\" is not a table, materialized view, index, or foreign table" msgstr "" @@ -8880,13 +8619,13 @@ msgstr "" msgid "\"%s\" is of the wrong type" msgstr "неправильный тип \"%s\"" -#: commands/tablecmds.c:4536 commands/tablecmds.c:4543 +#: 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:4550 +#: commands/tablecmds.c:4571 #, c-format msgid "" "cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" @@ -8894,148 +8633,148 @@ msgstr "" "изменить Ñтороннюю таблицу \"%s\" нельзÑ, так как Ñтолбец \"%s.%s\" " "задейÑтвует тип её Ñтроки" -#: commands/tablecmds.c:4557 +#: 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:4619 +#: 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:4621 +#: commands/tablecmds.c:4634 #, c-format msgid "Use ALTER ... CASCADE to alter the typed tables too." msgstr "" "Чтобы изменить также типизированные таблицы, выполните ALTER ... CASCADE." -#: commands/tablecmds.c:4665 +#: commands/tablecmds.c:4678 #, c-format msgid "type %s is not a composite type" msgstr "тип %s не ÑвлÑетÑÑ ÑоÑтавным" -#: commands/tablecmds.c:4691 +#: commands/tablecmds.c:4704 #, c-format msgid "cannot add column to typed table" msgstr "добавить Ñтолбец в типизированную таблицу нельзÑ" -#: commands/tablecmds.c:4759 commands/tablecmds.c:10351 +#: 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:4765 commands/tablecmds.c:10358 +#: 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:4775 +#: commands/tablecmds.c:4788 #, c-format msgid "child table \"%s\" has a conflicting \"%s\" column" msgstr "дочернÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" Ñодержит конфликтующий Ñтолбец \"%s\"" -#: commands/tablecmds.c:4787 +#: commands/tablecmds.c:4800 #, c-format msgid "merging definition of column \"%s\" for child \"%s\"" msgstr "объединение определений Ñтолбца \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° \"%s\"" -#: commands/tablecmds.c:5014 +#: commands/tablecmds.c:5027 #, c-format msgid "column must be added to child tables too" msgstr "Ñтолбец также должен быть добавлен к дочерним таблицам" -#: commands/tablecmds.c:5089 +#: commands/tablecmds.c:5102 #, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" msgstr "Ñтолбец \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" уже ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:5096 +#: commands/tablecmds.c:5109 #, 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 +#: 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:5243 +#: commands/tablecmds.c:5256 #, c-format msgid "column \"%s\" is in a primary key" msgstr "Ñтолбец \"%s\" входит в первичный ключ" -#: commands/tablecmds.c:5458 +#: commands/tablecmds.c:5471 #, c-format msgid "statistics target %d is too low" msgstr "целевое ограничение ÑтатиÑтики Ñлишком мало (%d)" -#: commands/tablecmds.c:5466 +#: commands/tablecmds.c:5479 #, c-format msgid "lowering statistics target to %d" msgstr "целевое ограничение ÑтатиÑтики ÑнижаетÑÑ Ð´Ð¾ %d" -#: commands/tablecmds.c:5616 +#: commands/tablecmds.c:5629 #, c-format msgid "invalid storage type \"%s\"" msgstr "неверный тип хранилища \"%s\"" -#: commands/tablecmds.c:5648 +#: commands/tablecmds.c:5661 #, c-format msgid "column data type %s can only have storage PLAIN" msgstr "тип данных Ñтолбца %s ÑовмеÑтим только Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰ÐµÐ¼ PLAIN" -#: commands/tablecmds.c:5686 +#: commands/tablecmds.c:5699 #, c-format msgid "cannot drop column from typed table" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ Ñтолбец в типизированной таблице" -#: commands/tablecmds.c:5730 +#: commands/tablecmds.c:5743 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" msgstr "Ñтолбец \"%s\" в таблице\"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:5743 +#: commands/tablecmds.c:5756 #, c-format msgid "cannot drop system column \"%s\"" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ ÑиÑтемный Ñтолбец \"%s\"" -#: commands/tablecmds.c:5750 +#: commands/tablecmds.c:5763 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ наÑледованный Ñтолбец \"%s\"" -#: commands/tablecmds.c:5990 +#: 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:6203 +#: commands/tablecmds.c:6216 #, c-format msgid "constraint must be added to child tables too" msgstr "ограничение также должно быть добавлено к дочерним таблицам" -#: commands/tablecmds.c:6274 +#: commands/tablecmds.c:6287 #, c-format msgid "referenced relation \"%s\" is not a table" msgstr "указанный объект \"%s\" не ÑвлÑетÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹" -#: commands/tablecmds.c:6297 +#: commands/tablecmds.c:6310 #, c-format msgid "constraints on permanent tables may reference only permanent tables" msgstr "" "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð² поÑтоÑнных таблицах могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на поÑтоÑнные " "таблицы" -#: commands/tablecmds.c:6304 +#: commands/tablecmds.c:6317 #, c-format msgid "" "constraints on unlogged tables may reference only permanent or unlogged " @@ -9044,13 +8783,13 @@ msgstr "" "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð² нежурналируемых таблицах могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на поÑтоÑнные " "или нежурналируемые таблицы" -#: commands/tablecmds.c:6310 +#: commands/tablecmds.c:6323 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "" "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð¾ временных таблицах могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на временные таблицы" -#: commands/tablecmds.c:6314 +#: commands/tablecmds.c:6327 #, c-format msgid "" "constraints on temporary tables must involve temporary tables of this session" @@ -9058,33 +8797,33 @@ msgstr "" "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð¾ временных таблицах должны ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на временные " "таблицы текущего ÑеанÑа" -#: commands/tablecmds.c:6375 +#: commands/tablecmds.c:6388 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" msgstr "чиÑло Ñтолбцов в иÑточнике и назначении внешнего ключа не Ñовпадает" -#: commands/tablecmds.c:6482 +#: commands/tablecmds.c:6495 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" msgstr "ограничение внешнего ключа \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ñ‚ÑŒ" -#: commands/tablecmds.c:6485 +#: 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:6692 commands/tablecmds.c:6860 -#: commands/tablecmds.c:7763 commands/tablecmds.c:7819 +#: 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:6698 +#: commands/tablecmds.c:6711 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" msgstr "ограничение \"%s\" в таблице \"%s\" не ÑвлÑетÑÑ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼ ключом" -#: commands/tablecmds.c:6867 +#: commands/tablecmds.c:6880 #, c-format msgid "" "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" @@ -9092,46 +8831,46 @@ msgstr "" "ограничение \"%s\" в таблице \"%s\" не ÑвлÑетÑÑ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼ ключом или " "ограничением-проверкой" -#: commands/tablecmds.c:6935 +#: commands/tablecmds.c:6949 #, c-format msgid "constraint must be validated on child tables too" msgstr "ограничение также должно ÑоблюдатьÑÑ Ð² дочерних таблицах" -#: commands/tablecmds.c:7004 +#: commands/tablecmds.c:7018 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "Ñтолбец \"%s\", указанный в ограничении внешнего ключа, не ÑущеÑтвует" -#: commands/tablecmds.c:7009 +#: commands/tablecmds.c:7023 #, c-format msgid "cannot have more than %d keys in a foreign key" msgstr "во внешнем ключе не может быть больше %d Ñтолбцов" -#: commands/tablecmds.c:7074 +#: commands/tablecmds.c:7088 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "" "иÑпользовать откладываемый первичный ключ в целевой внешней таблице \"%s\" " "нельзÑ" -#: commands/tablecmds.c:7091 +#: commands/tablecmds.c:7105 #, c-format msgid "there is no primary key for referenced table \"%s\"" msgstr "в целевой внешней таблице \"%s\" нет первичного ключа" -#: commands/tablecmds.c:7156 +#: commands/tablecmds.c:7170 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" msgstr "в ÑпиÑке Ñтолбцов внешнего ключа не должно быть повторений" -#: commands/tablecmds.c:7250 +#: commands/tablecmds.c:7264 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "" "иÑпользовать откладываемое ограничение уникальноÑти в целевой внешней " "таблице \"%s\" нельзÑ" -#: commands/tablecmds.c:7255 +#: commands/tablecmds.c:7269 #, c-format msgid "" "there is no unique constraint matching given keys for referenced table \"%s\"" @@ -9139,32 +8878,32 @@ msgstr "" "в целевой внешней таблице \"%s\" нет Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ñти, " "ÑоответÑтвующего данным ключам" -#: commands/tablecmds.c:7418 +#: commands/tablecmds.c:7432 #, c-format msgid "validating foreign key constraint \"%s\"" msgstr "проверка Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ ключа \"%s\"" -#: commands/tablecmds.c:7717 +#: commands/tablecmds.c:7731 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" msgstr "удалить наÑледованное ограничение \"%s\" таблицы \"%s\" нельзÑ" -#: commands/tablecmds.c:7769 +#: commands/tablecmds.c:7783 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" msgstr "ограничение \"%s\" в таблице \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:7908 +#: commands/tablecmds.c:7922 #, c-format msgid "cannot alter column type of typed table" msgstr "изменить тип Ñтолбца в типизированной таблице нельзÑ" -#: commands/tablecmds.c:7931 +#: commands/tablecmds.c:7945 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "изменить наÑледованный Ñтолбец \"%s\" нельзÑ" -#: commands/tablecmds.c:7980 +#: commands/tablecmds.c:7994 #, c-format msgid "" "result of USING clause for column \"%s\" cannot be cast automatically to " @@ -9172,199 +8911,199 @@ msgid "" msgstr "" "результат USING Ð´Ð»Ñ Ñтолбца \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки привеÑти к типу %s" -#: commands/tablecmds.c:7983 +#: commands/tablecmds.c:7997 #, c-format msgid "You might need to add an explicit cast." msgstr "Возможно, необходимо добавить Ñвное приведение." -#: commands/tablecmds.c:7987 +#: 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:7990 +#: commands/tablecmds.c:8004 #, c-format msgid "You might need to specify \"USING %s::%s\"." msgstr "Возможно, необходимо указать \"USING %s::%s\"." -#: commands/tablecmds.c:8089 +#: commands/tablecmds.c:8103 #, c-format msgid "USING expression contains a whole-row table reference." msgstr "Выражение USING ÑÑылаетÑÑ Ð½Ð° тип вÑей Ñтроки таблицы." -#: commands/tablecmds.c:8100 +#: commands/tablecmds.c:8114 #, c-format msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "" "тип наÑледованного Ñтолбца \"%s\" должен быть изменён и в дочерних таблицах" -#: commands/tablecmds.c:8187 +#: commands/tablecmds.c:8201 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ тип Ñтолбца \"%s\" дважды" -#: commands/tablecmds.c:8223 +#: commands/tablecmds.c:8237 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "" "значение по умолчанию Ð´Ð»Ñ Ñтолбца \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки привеÑти к " "типу %s" -#: commands/tablecmds.c:8349 +#: commands/tablecmds.c:8363 #, 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 +#: 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:8368 +#: commands/tablecmds.c:8382 #, c-format msgid "cannot alter type of a column used in a trigger definition" msgstr "изменить тип Ñтолбца, задейÑтвованного в определении триггера, нельзÑ" -#: commands/tablecmds.c:8386 +#: commands/tablecmds.c:8400 #, c-format msgid "cannot alter type of a column used in a policy definition" msgstr "изменить тип Ñтолбца, задейÑтвованного в определении политики, нельзÑ" -#: commands/tablecmds.c:9051 +#: commands/tablecmds.c:9065 #, c-format msgid "cannot change owner of index \"%s\"" msgstr "Ñменить владельца индекÑа \"%s\" нельзÑ" -#: commands/tablecmds.c:9053 +#: commands/tablecmds.c:9067 #, c-format msgid "Change the ownership of the index's table, instead." msgstr "Однако возможно Ñменить владельца таблицы, Ñодержащей Ñтот индекÑ." -#: commands/tablecmds.c:9069 +#: commands/tablecmds.c:9083 #, c-format msgid "cannot change owner of sequence \"%s\"" msgstr "Ñменить владельца поÑледовательноÑти \"%s\" нельзÑ" -#: commands/tablecmds.c:9071 commands/tablecmds.c:11543 +#: commands/tablecmds.c:9085 commands/tablecmds.c:11557 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." msgstr "ПоÑледовательноÑть \"%s\" ÑвÑзана Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹ \"%s\"." -#: commands/tablecmds.c:9083 commands/tablecmds.c:12190 +#: commands/tablecmds.c:9097 commands/tablecmds.c:12204 #, c-format msgid "Use ALTER TYPE instead." msgstr "ИÑпользуйте ALTER TYPE." -#: commands/tablecmds.c:9092 +#: commands/tablecmds.c:9106 #, c-format msgid "\"%s\" is not a table, view, sequence, or foreign table" msgstr "" "\"%s\" - Ñто не таблица, TOAST-таблица, индекÑ, предÑтавление или " "поÑледовательноÑть" -#: commands/tablecmds.c:9435 +#: commands/tablecmds.c:9449 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "в одной инÑтрукции не может быть неÑколько подкоманд SET TABLESPACE" -#: commands/tablecmds.c:9508 +#: 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:9541 commands/view.c:498 +#: 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:9687 +#: commands/tablecmds.c:9701 #, c-format msgid "cannot move system relation \"%s\"" msgstr "перемеÑтить ÑиÑтемную таблицу \"%s\" нельзÑ" -#: commands/tablecmds.c:9703 +#: commands/tablecmds.c:9717 #, c-format msgid "cannot move temporary tables of other sessions" msgstr "перемещать временные таблицы других ÑеанÑов нельзÑ" -#: commands/tablecmds.c:9840 +#: commands/tablecmds.c:9854 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" msgstr "" "в табличных проÑтранÑтвах еÑть только таблицы, индекÑÑ‹ и материализованные " "предÑтавлениÑ" -#: commands/tablecmds.c:9852 +#: commands/tablecmds.c:9866 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" msgstr "перемещать объекты в/из табличного проÑтранÑтва pg_global нельзÑ" -#: commands/tablecmds.c:9943 +#: commands/tablecmds.c:9957 #, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" msgstr "" "обработка прерываетÑÑ Ð¸Ð·-за невозможноÑти заблокировать отношение \"%s.%s\"" -#: commands/tablecmds.c:9959 +#: commands/tablecmds.c:9973 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr "в табличном проÑтранÑтве \"%s\" не найдены подходÑщие отношениÑ" -#: commands/tablecmds.c:10033 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:10115 +#: commands/tablecmds.c:10129 #, c-format msgid "cannot change inheritance of typed table" msgstr "изменить наÑледование типизированной таблицы нельзÑ" -#: commands/tablecmds.c:10165 +#: commands/tablecmds.c:10179 #, c-format msgid "cannot inherit to temporary relation of another session" msgstr "наÑледование Ð´Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ ÑеанÑа невозможно" -#: commands/tablecmds.c:10219 +#: commands/tablecmds.c:10233 #, c-format msgid "circular inheritance not allowed" msgstr "цикличеÑкое наÑледование недопуÑтимо" -#: commands/tablecmds.c:10220 +#: commands/tablecmds.c:10234 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "\"%s\" уже ÑвлÑетÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ¾Ð¼ \"%s\"." -#: commands/tablecmds.c:10228 +#: 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:10369 +#: commands/tablecmds.c:10383 #, 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 +#: commands/tablecmds.c:10399 commands/tablecmds.c:10432 #, c-format msgid "child table is missing column \"%s\"" msgstr "в дочерней таблице не хватает Ñтолбца \"%s\"" -#: commands/tablecmds.c:10501 +#: commands/tablecmds.c:10515 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "" "дочернÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" Ñодержит другое определение ограничениÑ-проверки \"%s" "\"" -#: commands/tablecmds.c:10509 +#: commands/tablecmds.c:10523 #, c-format msgid "" "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s" @@ -9373,7 +9112,7 @@ msgstr "" "ограничение \"%s\" конфликтует Ñ Ð½ÐµÐ½Ð°Ñледуемым ограничением дочерней таблицы " "\"%s\"" -#: commands/tablecmds.c:10520 +#: commands/tablecmds.c:10534 #, c-format msgid "" "constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" @@ -9381,76 +9120,76 @@ msgstr "" "ограничение \"%s\" конфликтует Ñ Ð½ÐµÐ¿Ñ€Ð¾Ð²ÐµÑ€ÐµÐ½Ð½Ñ‹Ð¼ (NOT VALID) ограничением " "дочерней таблицы \"%s\"" -#: commands/tablecmds.c:10544 +#: commands/tablecmds.c:10558 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "в дочерней таблице не хватает Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/tablecmds.c:10628 +#: commands/tablecmds.c:10642 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" msgstr "отношение \"%s\" не ÑвлÑетÑÑ Ð¿Ñ€ÐµÐ´ÐºÐ¾Ð¼ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\"" -#: commands/tablecmds.c:10862 +#: commands/tablecmds.c:10876 #, c-format msgid "typed tables cannot inherit" msgstr "типизированные таблицы не могут наÑледоватьÑÑ" -#: commands/tablecmds.c:10893 +#: commands/tablecmds.c:10907 #, c-format msgid "table is missing column \"%s\"" msgstr "в таблице не хватает Ñтолбца \"%s\"" -#: commands/tablecmds.c:10903 +#: commands/tablecmds.c:10917 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" msgstr "таблица Ñодержит Ñтолбец \"%s\", тогда как тип требует \"%s\"" -#: commands/tablecmds.c:10912 +#: commands/tablecmds.c:10926 #, c-format msgid "table \"%s\" has different type for column \"%s\"" msgstr "таблица \"%s\" Ñодержит Ñтолбец \"%s\" другого типа" -#: commands/tablecmds.c:10925 +#: commands/tablecmds.c:10939 #, c-format msgid "table has extra column \"%s\"" msgstr "таблица Ñодержит лишний Ñтолбец \"%s\"" -#: commands/tablecmds.c:10977 +#: commands/tablecmds.c:10991 #, c-format msgid "\"%s\" is not a typed table" msgstr "\"%s\" - Ñто не Ñ‚Ð¸Ð¿Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" -#: commands/tablecmds.c:11161 +#: commands/tablecmds.c:11175 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" msgstr "" "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать неуникальный Ð¸Ð½Ð´ÐµÐºÑ \"%s\"" -#: commands/tablecmds.c:11167 +#: commands/tablecmds.c:11181 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" msgstr "" "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать не непоÑредÑтвенный Ð¸Ð½Ð´ÐµÐºÑ \"%s" "\"" -#: commands/tablecmds.c:11173 +#: commands/tablecmds.c:11187 #, c-format msgid "cannot use expression index \"%s\" as replica identity" msgstr "" "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð¸Ð½Ð´ÐµÐºÑ Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼ \"%s\"" -#: commands/tablecmds.c:11179 +#: commands/tablecmds.c:11193 #, c-format msgid "cannot use partial index \"%s\" as replica identity" msgstr "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать чаÑтичный Ð¸Ð½Ð´ÐµÐºÑ \"%s\"" -#: commands/tablecmds.c:11185 +#: commands/tablecmds.c:11199 #, c-format msgid "cannot use invalid index \"%s\" as replica identity" msgstr "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать нерабочий Ð¸Ð½Ð´ÐµÐºÑ \"%s\"" -#: commands/tablecmds.c:11206 +#: commands/tablecmds.c:11220 #, c-format msgid "" "index \"%s\" cannot be used as replica identity because column %d is a " @@ -9459,7 +9198,7 @@ msgstr "" "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики, так как Ñтолбец " "%d - ÑиÑтемный" -#: commands/tablecmds.c:11213 +#: commands/tablecmds.c:11227 #, c-format msgid "" "index \"%s\" cannot be used as replica identity because column \"%s\" is " @@ -9468,13 +9207,13 @@ msgstr "" "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики, так как Ñтолбец " "\"%s\" допуÑкает NULL" -#: commands/tablecmds.c:11416 +#: commands/tablecmds.c:11430 #, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" msgstr "" "изменить ÑоÑтоÑние Ð¶ÑƒÑ€Ð½Ð°Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ %s нельзÑ, так как она временнаÑ" -#: commands/tablecmds.c:11475 +#: commands/tablecmds.c:11489 #, c-format msgid "" "could not change table \"%s\" to logged because it references unlogged table " @@ -9483,7 +9222,7 @@ msgstr "" "не удалоÑÑŒ Ñделать таблицу \"%s\" журналируемой, так как она ÑÑылаетÑÑ Ð½Ð° " "нежурналируемую таблицу \"%s\"" -#: commands/tablecmds.c:11485 +#: commands/tablecmds.c:11499 #, c-format msgid "" "could not change table \"%s\" to unlogged because it references logged table " @@ -9492,22 +9231,22 @@ msgstr "" "не удалоÑÑŒ Ñделать таблицу \"%s\" нежурналируемой, так как она ÑÑылаетÑÑ Ð½Ð° " "журналируемую таблицу \"%s\"" -#: commands/tablecmds.c:11542 +#: commands/tablecmds.c:11556 #, c-format msgid "cannot move an owned sequence into another schema" msgstr "перемеÑтить поÑледовательноÑть Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†ÐµÐ¼ в другую Ñхему нельзÑ" -#: commands/tablecmds.c:11647 +#: commands/tablecmds.c:11661 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" msgstr "отношение \"%s\" уже ÑущеÑтвует в Ñхеме \"%s\"" -#: commands/tablecmds.c:12174 +#: commands/tablecmds.c:12188 #, c-format msgid "\"%s\" is not a composite type" msgstr "\"%s\" - Ñто не ÑоÑтавной тип" -#: commands/tablecmds.c:12204 +#: commands/tablecmds.c:12218 #, c-format msgid "" "\"%s\" is not a table, view, materialized view, sequence, or foreign table" @@ -9517,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" @@ -10185,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\"" @@ -10251,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:13615 gram.y:13650 +#: 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\" зарезервировано" @@ -10478,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" @@ -10492,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" @@ -10500,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" @@ -10546,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" @@ -10554,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 " @@ -10563,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" @@ -10589,17 +10328,17 @@ 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\": приоÑтановка уÑÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за конфликтующего запроÑа блокировки" @@ -10671,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 "иÑпользовать Ñериализуемый режим в горÑчем резерве нельзÑ" @@ -10706,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 @@ -10870,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 " @@ -10898,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 " @@ -11346,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" @@ -11686,8 +11425,8 @@ msgstr "" #, 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:493 #, c-format @@ -11714,200 +11453,200 @@ msgstr "ожидалÑÑ Ð¾Ñ‚Ð²ÐµÑ‚ Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼, но получено Ñ msgid "invalid password packet size" msgstr "неверный размер пакета Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼" -#: libpq/auth.c:828 +#: 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:888 +#: libpq/auth.c:902 #, c-format msgid "expected GSS response, got message type %d" msgstr "ожидалÑÑ Ð¾Ñ‚Ð²ÐµÑ‚ GSS, но получено Ñообщение %d" -#: libpq/auth.c:949 +#: libpq/auth.c:963 msgid "accepting GSS security context failed" msgstr "принÑть контекÑÑ‚ безопаÑноÑти GSS не удалоÑÑŒ" -#: libpq/auth.c:975 +#: libpq/auth.c:989 msgid "retrieving GSS user name failed" msgstr "получить Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ GSS не удалоÑÑŒ" -#: libpq/auth.c:1094 +#: libpq/auth.c:1108 #, c-format msgid "SSPI is not supported in protocol version 2" msgstr "SSPI не поддерживаетÑÑ Ð² протоколе верÑии 2" -#: libpq/auth.c:1109 +#: libpq/auth.c:1123 msgid "could not acquire SSPI credentials" msgstr "не удалоÑÑŒ получить удоÑтоверение SSPI" -#: libpq/auth.c:1127 +#: libpq/auth.c:1141 #, c-format msgid "expected SSPI response, got message type %d" msgstr "ожидалÑÑ Ð¾Ñ‚Ð²ÐµÑ‚ SSPI, но получено Ñообщение %d" -#: libpq/auth.c:1199 +#: libpq/auth.c:1213 msgid "could not accept SSPI security context" msgstr "принÑть контекÑÑ‚ безопаÑноÑти SSPI не удалоÑÑŒ" -#: libpq/auth.c:1261 +#: libpq/auth.c:1275 msgid "could not get token from SSPI security context" msgstr "не удалоÑÑŒ получить маркер из контекÑта безопаÑноÑти SSPI" -#: libpq/auth.c:1380 libpq/auth.c:1399 +#: libpq/auth.c:1394 libpq/auth.c:1413 #, c-format msgid "could not translate name" msgstr "не удалоÑÑŒ преобразовать имÑ" -#: libpq/auth.c:1412 +#: libpq/auth.c:1426 #, c-format msgid "realm name too long" msgstr "Ð¸Ð¼Ñ Ð¾Ð±Ð»Ð°Ñти Ñлишком длинное" -#: libpq/auth.c:1427 +#: libpq/auth.c:1441 #, c-format msgid "translated account name too long" msgstr "преобразованное Ð¸Ð¼Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи Ñлишком длинное" -#: libpq/auth.c:1613 +#: libpq/auth.c:1627 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "не удалоÑÑŒ Ñоздать Ñокет Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñерверу Ident: %m" -#: libpq/auth.c:1628 +#: libpq/auth.c:1642 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº локальному адреÑу \"%s\": %m" -#: libpq/auth.c:1640 +#: 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:1662 +#: 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:1679 +#: 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:1689 +#: libpq/auth.c:1703 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "неверно форматированный ответ от Ñервера Ident: \"%s\"" -#: libpq/auth.c:1729 +#: libpq/auth.c:1743 #, c-format msgid "peer authentication is not supported on this platform" msgstr "проверка подлинноÑти peer в Ñтой ОС не поддерживаетÑÑ" -#: libpq/auth.c:1733 +#: libpq/auth.c:1747 #, c-format msgid "could not get peer credentials: %m" msgstr "не удалоÑÑŒ получить данные Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ‡ÐµÑ€ÐµÐ· механизм peer: %m" -#: libpq/auth.c:1742 +#: libpq/auth.c:1756 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "найти локального Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾ идентификатору (%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 +#: libpq/auth.c:1844 #, c-format msgid "error from underlying PAM layer: %s" msgstr "ошибка в нижележащем Ñлое PAM: %s" -#: libpq/auth.c:1917 +#: libpq/auth.c:1925 #, c-format msgid "could not create PAM authenticator: %s" msgstr "не удалоÑÑŒ Ñоздать аутентификатор PAM: %s" -#: libpq/auth.c:1928 +#: libpq/auth.c:1936 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "ошибка в pam_set_item(PAM_USER): %s" -#: libpq/auth.c:1939 +#: libpq/auth.c:1947 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "ошибка в pam_set_item(PAM_RHOST): %s" -#: libpq/auth.c:1950 +#: libpq/auth.c:1958 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "ошибка в pam_set_item(PAM_CONV): %s" -#: libpq/auth.c:1961 +#: libpq/auth.c:1969 #, c-format msgid "pam_authenticate failed: %s" msgstr "ошибка в pam_authenticate: %s" -#: libpq/auth.c:1972 +#: libpq/auth.c:1980 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "ошибка в pam_acct_mgmt: %s" -#: libpq/auth.c:1983 +#: libpq/auth.c:1991 #, c-format msgid "could not release PAM authenticator: %s" msgstr "не удалоÑÑŒ оÑвободить аутентификатор PAM: %s" -#: libpq/auth.c:2048 +#: libpq/auth.c:2056 #, c-format msgid "could not initialize LDAP: %m" msgstr "не удалоÑÑŒ инициализировать LDAP: %m" -#: libpq/auth.c:2051 +#: libpq/auth.c:2059 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "не удалоÑÑŒ инициализировать LDAP (код ошибки: %d)" -#: libpq/auth.c:2061 +#: libpq/auth.c:2069 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "не удалоÑÑŒ задать верÑию протокола LDAP: %s" -#: libpq/auth.c:2090 +#: libpq/auth.c:2098 #, c-format msgid "could not load wldap32.dll" msgstr "не удалоÑÑŒ загрузить wldap32.dll" -#: libpq/auth.c:2098 +#: 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:2099 +#: libpq/auth.c:2107 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "LDAP через SSL не поддерживаетÑÑ Ð² Ñтой ОС." -#: libpq/auth.c:2114 +#: libpq/auth.c:2122 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "не удалоÑÑŒ начать ÑÐµÐ°Ð½Ñ LDAP TLS: %s" -#: libpq/auth.c:2136 +#: libpq/auth.c:2144 #, c-format msgid "LDAP server not specified" msgstr "LDAP-Ñервер не определён" -#: libpq/auth.c:2189 +#: libpq/auth.c:2192 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "недопуÑтимый Ñимвол в имени Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ подлинноÑти LDAP" -#: libpq/auth.c:2204 +#: libpq/auth.c:2207 #, c-format msgid "" "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " @@ -11916,28 +11655,28 @@ msgstr "" "не удалоÑÑŒ выполнить начальную привÑзку LDAP Ð´Ð»Ñ ldapbinddn \"%s\" на " "Ñервере \"%s\": %s" -#: libpq/auth.c:2228 +#: 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:2239 +#: libpq/auth.c:2242 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "в LDAP нет Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\"" -#: libpq/auth.c:2240 +#: 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:2244 +#: libpq/auth.c:2247 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "пользователь LDAP \"%s\" не уникален" -#: libpq/auth.c:2245 +#: libpq/auth.c:2248 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "" @@ -11946,7 +11685,7 @@ msgstr[0] "LDAP-поиÑк по фильтру \"%s\" на Ñервере \"%s\" msgstr[1] "LDAP-поиÑк по фильтру \"%s\" на Ñервере \"%s\" вернул %d запиÑи." msgstr[2] "LDAP-поиÑк по фильтру \"%s\" на Ñервере \"%s\" вернул %d запиÑей." -#: libpq/auth.c:2263 +#: libpq/auth.c:2266 #, c-format msgid "" "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" @@ -11954,19 +11693,19 @@ msgstr "" "не удалоÑÑŒ получить dn Ð´Ð»Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ результата, ÑоответÑтвующего \"%s\" на " "Ñервере \"%s\": %s" -#: libpq/auth.c:2283 +#: 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:2313 +#: 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:2341 +#: libpq/auth.c:2344 #, c-format msgid "" "certificate authentication failed for user \"%s\": client certificate " @@ -11975,99 +11714,99 @@ msgstr "" "ошибка проверки подлинноÑти Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" по Ñертификату: Ñертификат " "клиента не Ñодержит Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" -#: libpq/auth.c:2468 +#: libpq/auth.c:2474 #, c-format msgid "RADIUS server not specified" msgstr "RADIUS-Ñервер не определён" -#: libpq/auth.c:2475 +#: libpq/auth.c:2481 #, c-format msgid "RADIUS secret not specified" msgstr "Ñекрет RADIUS не определён" -#: libpq/auth.c:2491 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" # well-spelled: Ñимв -#: libpq/auth.c:2519 +#: libpq/auth.c:2518 #, c-format msgid "" "RADIUS authentication does not support passwords longer than %d characters" msgstr "проверка подлинноÑти RADIUS не поддерживает пароли длиннее %d Ñимв." -#: libpq/auth.c:2531 +#: libpq/auth.c:2530 #, c-format msgid "could not generate random encryption vector" msgstr "не удалоÑÑŒ Ñгенерировать Ñлучайный вектор шифрованиÑ" -#: libpq/auth.c:2569 +#: libpq/auth.c:2568 #, c-format msgid "could not perform MD5 encryption of password" msgstr "не удалоÑÑŒ вычиÑлить MD5-хеш паролÑ" -#: libpq/auth.c:2594 +#: libpq/auth.c:2593 #, c-format msgid "could not create RADIUS socket: %m" msgstr "не удалоÑÑŒ Ñоздать Ñокет RADIUS: %m" -#: libpq/auth.c:2615 +#: libpq/auth.c:2614 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº локальному Ñокету RADIUS: %m" -#: libpq/auth.c:2625 +#: libpq/auth.c:2624 #, c-format msgid "could not send RADIUS packet: %m" msgstr "не удалоÑÑŒ отправить пакет RADIUS: %m" -#: libpq/auth.c:2658 libpq/auth.c:2683 +#: libpq/auth.c:2657 libpq/auth.c:2682 #, c-format msgid "timeout waiting for RADIUS response" msgstr "превышено Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð° RADIUS" -#: libpq/auth.c:2676 +#: libpq/auth.c:2675 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "не удалоÑÑŒ проверить ÑоÑтоÑние Ñокета RADIUS: %m" -#: libpq/auth.c:2705 +#: libpq/auth.c:2704 #, c-format msgid "could not read RADIUS response: %m" msgstr "не удалоÑÑŒ прочитать ответ RADIUS: %m" -#: libpq/auth.c:2717 libpq/auth.c:2721 +#: 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:2730 +#: libpq/auth.c:2729 #, c-format msgid "RADIUS response too short: %d" msgstr "Ñлишком короткий ответ RADIUS: %d" -#: libpq/auth.c:2737 +#: libpq/auth.c:2736 #, c-format msgid "RADIUS response has corrupt length: %d (actual length %d)" msgstr "в ответе RADIUS иÑпорчена длина: %d (фактичеÑÐºÐ°Ñ Ð´Ð»Ð¸Ð½Ð° %d)" -#: libpq/auth.c:2745 +#: 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:2770 +#: libpq/auth.c:2769 #, c-format msgid "could not perform MD5 encryption of received packet" msgstr "не удалоÑÑŒ вычиÑлить MD5 Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð½Ñтого пакета" -#: libpq/auth.c:2779 +#: libpq/auth.c:2778 #, c-format msgid "RADIUS response has incorrect MD5 signature" msgstr "ответ RADIUS Ñодержит неверную подпиÑÑŒ MD5" -#: libpq/auth.c:2796 +#: libpq/auth.c:2795 #, c-format msgid "RADIUS response has invalid code (%d) for user \"%s\"" msgstr "ответ RADIUS Ñодержит неверный код (%d) Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\"" @@ -12080,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" @@ -12206,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" @@ -12307,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\"." @@ -12666,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 " @@ -12741,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 " @@ -12751,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" @@ -13199,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:1494 parser/analyze.c:1549 parser/analyze.c:1747 +#: 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:3823 +#: optimizer/plan/planner.c:3809 #, c-format msgid "could not implement GROUP BY" msgstr "не удалоÑÑŒ реализовать GROUP BY" -#: optimizer/plan/planner.c:3824 optimizer/plan/planner.c:4217 -#: 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 " @@ -13220,27 +12959,27 @@ msgstr "" "Одни типы данных поддерживают только хеширование, а другие - только " "Ñортировку." -#: optimizer/plan/planner.c:4216 +#: optimizer/plan/planner.c:4202 #, c-format msgid "could not implement DISTINCT" msgstr "не удалоÑÑŒ реализовать DISTINCT" -#: optimizer/plan/planner.c:4846 +#: optimizer/plan/planner.c:4832 #, c-format msgid "could not implement window PARTITION BY" msgstr "не удалоÑÑŒ реализовать PARTITION BY Ð´Ð»Ñ Ð¾ÐºÐ½Ð°" -#: optimizer/plan/planner.c:4847 +#: optimizer/plan/planner.c:4833 #, c-format msgid "Window partitioning columns must be of sortable datatypes." msgstr "Столбцы, разбивающие окна, должны иметь Ñортируемые типы данных." -#: optimizer/plan/planner.c:4851 +#: optimizer/plan/planner.c:4837 #, c-format msgid "could not implement window ORDER BY" msgstr "не удалоÑÑŒ реализовать ORDER BY Ð´Ð»Ñ Ð¾ÐºÐ½Ð°" -#: optimizer/plan/planner.c:4852 +#: optimizer/plan/planner.c:4838 #, c-format msgid "Window ordering columns must be of sortable datatypes." msgstr "Столбцы, Ñортирующие окна, должны иметь Ñортируемые типы данных." @@ -13250,18 +12989,18 @@ 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" @@ -14091,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 @@ -14321,7 +14059,7 @@ msgstr "параметр $%d не ÑущеÑтвует" msgid "NULLIF requires = operator to yield boolean" msgstr "Ð´Ð»Ñ NULLIF требуетÑÑ, чтобы оператор = возвращал логичеÑкое значение" -#: parser/parse_expr.c:1501 gram.y:9887 +#: parser/parse_expr.c:1501 gram.y:9896 #, c-format msgid "number of columns does not match number of values" msgstr "чиÑло Ñтолбцов не равно чиÑлу значений" @@ -14661,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" @@ -14961,133 +14699,133 @@ msgstr "модификатором типа должна быть проÑÑ‚Ð°Ñ msgid "invalid type name \"%s\"" msgstr "неверное Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð° \"%s\"" -#: parser/parse_utilcmd.c:384 +#: parser/parse_utilcmd.c:385 #, c-format msgid "array of serial is not implemented" msgstr "маÑÑивы Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ serial не реализованы" -#: parser/parse_utilcmd.c:432 +#: 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:526 parser/parse_utilcmd.c:538 +#: 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:550 +#: 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:567 parser/parse_utilcmd.c:658 +#: 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:576 parser/parse_utilcmd.c:668 +#: 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:593 parser/parse_utilcmd.c:692 +#: 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:678 +#: parser/parse_utilcmd.c:679 #, c-format msgid "exclusion constraints are not supported on foreign tables" msgstr "ограничениÑ-иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñторонних таблиц не поддерживаютÑÑ" -#: parser/parse_utilcmd.c:742 +#: parser/parse_utilcmd.c:743 #, c-format msgid "LIKE is not supported for creating foreign tables" msgstr "LIKE при Ñоздании Ñторонних таблиц не поддерживаетÑÑ" -#: parser/parse_utilcmd.c:1275 parser/parse_utilcmd.c:1351 +#: 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:1621 +#: parser/parse_utilcmd.c:1622 #, c-format msgid "cannot use an existing index in CREATE TABLE" msgstr "в CREATE TABLE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать ÑущеÑтвующий индекÑ" -#: parser/parse_utilcmd.c:1641 +#: parser/parse_utilcmd.c:1642 #, c-format msgid "index \"%s\" is already associated with a constraint" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" уже ÑвÑзан Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸ÐµÐ¼" -#: parser/parse_utilcmd.c:1649 +#: parser/parse_utilcmd.c:1650 #, c-format msgid "index \"%s\" does not belong to table \"%s\"" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не принадлежит таблице \"%s\"" -#: parser/parse_utilcmd.c:1656 +#: parser/parse_utilcmd.c:1657 #, c-format msgid "index \"%s\" is not valid" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" - нерабочий" -#: parser/parse_utilcmd.c:1662 +#: parser/parse_utilcmd.c:1663 #, 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 +#: 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:1669 +#: parser/parse_utilcmd.c:1670 #, c-format msgid "index \"%s\" contains expressions" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ñодержит выражениÑ" -#: parser/parse_utilcmd.c:1676 +#: parser/parse_utilcmd.c:1677 #, c-format msgid "\"%s\" is a partial index" msgstr "\"%s\" - чаÑтичный индекÑ" -#: parser/parse_utilcmd.c:1688 +#: parser/parse_utilcmd.c:1689 #, c-format msgid "\"%s\" is a deferrable index" msgstr "\"%s\" - откладываемый индекÑ" -#: parser/parse_utilcmd.c:1689 +#: parser/parse_utilcmd.c:1690 #, c-format msgid "Cannot create a non-deferrable constraint using a deferrable index." msgstr "" "Создать не откладываемое ограничение на базе откладываемого индекÑа нельзÑ." -#: parser/parse_utilcmd.c:1746 +#: parser/parse_utilcmd.c:1747 #, c-format msgid "index \"%s\" does not have default sorting behavior" msgstr "Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа \"%s\" не определено поведение при Ñортировке по умолчанию" -#: parser/parse_utilcmd.c:1893 +#: parser/parse_utilcmd.c:1894 #, c-format msgid "column \"%s\" appears twice in primary key constraint" msgstr "Ñтолбец \"%s\" фигурирует в первичном ключе дважды" -#: parser/parse_utilcmd.c:1899 +#: parser/parse_utilcmd.c:1900 #, c-format msgid "column \"%s\" appears twice in unique constraint" msgstr "Ñтолбец \"%s\" фигурирует в ограничении уникальноÑти дважды" -#: parser/parse_utilcmd.c:2103 +#: parser/parse_utilcmd.c:2104 #, c-format msgid "index expression cannot return a set" msgstr "индекÑное выражение не может возвращать множеÑтво" -#: parser/parse_utilcmd.c:2114 +#: parser/parse_utilcmd.c:2115 #, c-format msgid "" "index expressions and predicates can refer only to the table being indexed" @@ -15095,17 +14833,17 @@ msgstr "" "индекÑные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸ предикаты могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на индекÑируемую " "таблицу" -#: parser/parse_utilcmd.c:2160 +#: parser/parse_utilcmd.c:2161 #, c-format msgid "rules on materialized views are not supported" msgstr "правила Ð´Ð»Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… предÑтавлений не поддерживаютÑÑ" -#: parser/parse_utilcmd.c:2221 +#: parser/parse_utilcmd.c:2222 #, c-format msgid "rule WHERE condition cannot contain references to other relations" msgstr "в уÑловиÑÑ… WHERE Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° другие отношениÑ" -#: parser/parse_utilcmd.c:2293 +#: parser/parse_utilcmd.c:2294 #, c-format msgid "" "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " @@ -15114,85 +14852,85 @@ msgstr "" "правила Ñ ÑƒÑловиÑми WHERE могут Ñодержать только дейÑÑ‚Ð²Ð¸Ñ SELECT, INSERT, " "UPDATE или DELETE" -#: parser/parse_utilcmd.c:2311 parser/parse_utilcmd.c:2410 +#: 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:2329 +#: parser/parse_utilcmd.c:2330 #, c-format msgid "ON SELECT rule cannot use OLD" msgstr "в правиле ON SELECT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать OLD" -#: parser/parse_utilcmd.c:2333 +#: parser/parse_utilcmd.c:2334 #, c-format msgid "ON SELECT rule cannot use NEW" msgstr "в правиле ON SELECT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать NEW" -#: parser/parse_utilcmd.c:2342 +#: parser/parse_utilcmd.c:2343 #, c-format msgid "ON INSERT rule cannot use OLD" msgstr "в правиле ON INSERT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать OLD" -#: parser/parse_utilcmd.c:2348 +#: parser/parse_utilcmd.c:2349 #, c-format msgid "ON DELETE rule cannot use NEW" msgstr "в правиле ON DELETE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать NEW" -#: parser/parse_utilcmd.c:2376 +#: parser/parse_utilcmd.c:2377 #, c-format msgid "cannot refer to OLD within WITH query" msgstr "в запроÑе WITH Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° OLD" -#: parser/parse_utilcmd.c:2383 +#: parser/parse_utilcmd.c:2384 #, c-format msgid "cannot refer to NEW within WITH query" msgstr "в запроÑе WITH Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° NEW" -#: parser/parse_utilcmd.c:2586 +#: parser/parse_utilcmd.c:2587 #, c-format msgid "transform expression must not return a set" msgstr "выражение Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ должно возвращать множеÑтво" -#: parser/parse_utilcmd.c:2700 +#: parser/parse_utilcmd.c:2701 #, c-format msgid "misplaced DEFERRABLE clause" msgstr "предложение DEFERRABLE раÑположено неправильно" -#: parser/parse_utilcmd.c:2705 parser/parse_utilcmd.c:2720 +#: 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:2715 +#: parser/parse_utilcmd.c:2716 #, c-format msgid "misplaced NOT DEFERRABLE clause" msgstr "предложение NOT DEFERRABLE раÑположено неправильно" -#: parser/parse_utilcmd.c:2728 parser/parse_utilcmd.c:2754 gram.y:4902 +#: 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:2736 +#: parser/parse_utilcmd.c:2737 #, c-format msgid "misplaced INITIALLY DEFERRED clause" msgstr "предложение INITIALLY DEFERRED раÑположено неправильно" -#: parser/parse_utilcmd.c:2741 parser/parse_utilcmd.c:2767 +#: 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:2762 +#: parser/parse_utilcmd.c:2763 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" msgstr "предложение INITIALLY IMMEDIATE раÑположено неправильно" -#: parser/parse_utilcmd.c:2953 +#: parser/parse_utilcmd.c:2954 #, c-format msgid "" "CREATE specifies a schema (%s) different from the one being created (%s)" @@ -15241,17 +14979,17 @@ msgstr "" "Возможно, вам Ñледует увеличить параметр Ñдра SEMVMX минимум до %d. " "Подробнее об Ñтом напиÑано в документации PostgreSQL." -#: port/pg_shmem.c:175 port/sysv_shmem.c:175 +#: 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:176 port/sysv_shmem.c:176 +#: 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:180 port/sysv_shmem.c:180 +#: 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 " @@ -15265,7 +15003,7 @@ msgstr "" "ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ наÑтройке разделÑемой памÑти ÑодержитÑÑ Ð² " "документации PostgreSQL." -#: port/pg_shmem.c:187 port/sysv_shmem.c:187 +#: 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 " @@ -15280,7 +15018,7 @@ msgstr "" "ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ наÑтройке разделÑемой памÑти ÑодержитÑÑ Ð² " "документации PostgreSQL." -#: port/pg_shmem.c:193 port/sysv_shmem.c:193 +#: 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 " @@ -15297,12 +15035,12 @@ msgstr "" "ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ наÑтройке разделÑемой памÑти ÑодержитÑÑ Ð² " "документации PostgreSQL." -#: port/pg_shmem.c:483 port/sysv_shmem.c:483 +#: 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:485 port/sysv_shmem.c:485 +#: 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 " @@ -15316,12 +15054,12 @@ msgstr "" "Б) можно Ñнизить иÑпользование разделÑемой памÑти, возможно, уменьшив " "shared_buffers или max_connections." -#: port/pg_shmem.c:551 port/sysv_shmem.c:551 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:646 port/sysv_shmem.c:646 +#: port/pg_shmem.c:667 port/sysv_shmem.c:667 #, c-format msgid "could not stat data directory \"%s\": %m" msgstr "не удалоÑÑŒ получить информацию о каталоге данных \"%s\": %m" @@ -15485,17 +15223,17 @@ msgstr "автоочиÑтка не запущена из-за неправил msgid "Enable the \"track_counts\" option." msgstr "Включите параметр \"track_counts\"." -#: postmaster/bgworker.c:346 postmaster/bgworker.c:745 +#: 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 " @@ -15504,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 " @@ -15513,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:752 +#: 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:764 +#: postmaster/bgworker.c:781 #, c-format msgid "" "background worker \"%s\": only dynamic background workers can request " @@ -15539,12 +15277,12 @@ msgstr "" "фоновый процеÑÑ \"%s\": только динамичеÑкие фоновые процеÑÑÑ‹ могут " "запрашивать уведомление" -#: postmaster/bgworker.c:779 +#: postmaster/bgworker.c:796 #, c-format msgid "too many background workers" msgstr "Ñлишком много фоновых процеÑÑов" -#: postmaster/bgworker.c:780 +#: postmaster/bgworker.c:797 #, c-format msgid "Up to %d background worker can be registered with the current settings." msgid_plural "" @@ -15556,7 +15294,7 @@ msgstr[1] "" msgstr[2] "" "МакÑимально возможное чиÑло фоновых процеÑÑов при текущих параметрах: %d." -#: postmaster/bgworker.c:784 +#: postmaster/bgworker.c:801 #, c-format msgid "" "Consider increasing the configuration parameter \"max_worker_processes\"." @@ -15630,7 +15368,7 @@ msgstr "Команда архивации Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹: %s" msgid "archive command was terminated by exception 0x%X" msgstr "команда архивации была прервана иÑключением 0x%X" -#: postmaster/pgarch.c:598 postmaster/postmaster.c:3491 +#: postmaster/pgarch.c:598 postmaster/postmaster.c:3514 #, c-format msgid "" "See C include file \"ntstatus.h\" for a description of the hexadecimal value." @@ -15663,132 +15401,132 @@ msgstr "файл архива журнала транзакций \"%s\"" msgid "could not open archive status directory \"%s\": %m" msgstr "не удалоÑÑŒ открыть каталог ÑоÑтоÑÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° \"%s\": %m" -#: postmaster/pgstat.c:355 +#: postmaster/pgstat.c:358 #, c-format msgid "could not resolve \"localhost\": %s" msgstr "не удалоÑÑŒ разрешить \"localhost\": %s" -#: postmaster/pgstat.c:378 +#: postmaster/pgstat.c:381 #, c-format msgid "trying another address for the statistics collector" msgstr "проба другого адреÑа Ð´Ð»Ñ Ñборщика ÑтатиÑтики" -#: postmaster/pgstat.c:387 +#: postmaster/pgstat.c:390 #, c-format msgid "could not create socket for statistics collector: %m" msgstr "не удалоÑÑŒ Ñоздать Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:399 +#: postmaster/pgstat.c:402 #, c-format msgid "could not bind socket for statistics collector: %m" msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº Ñокету Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:410 +#: postmaster/pgstat.c:413 #, c-format msgid "could not get address of socket for statistics collector: %m" msgstr "не удалоÑÑŒ получить Ð°Ð´Ñ€ÐµÑ Ñокета Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:426 +#: postmaster/pgstat.c:429 #, c-format msgid "could not connect socket for statistics collector: %m" msgstr "не удалоÑÑŒ подключить Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:447 +#: postmaster/pgstat.c:450 #, c-format msgid "could not send test message on socket for statistics collector: %m" msgstr "" "не удалоÑÑŒ поÑлать теÑтовое Ñообщение в Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:473 +#: postmaster/pgstat.c:476 #, c-format msgid "select() failed in statistics collector: %m" msgstr "Ñбой select() в Ñборщике ÑтатиÑтики: %m" -#: postmaster/pgstat.c:488 +#: postmaster/pgstat.c:491 #, c-format msgid "test message did not get through on socket for statistics collector" msgstr "теÑтовое Ñообщение не прошло через Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики" -#: postmaster/pgstat.c:503 +#: postmaster/pgstat.c:506 #, c-format msgid "could not receive test message on socket for statistics collector: %m" msgstr "" "теÑтовое Ñообщение через Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики получить не удалоÑÑŒ: " "%m" -#: postmaster/pgstat.c:513 +#: postmaster/pgstat.c:516 #, c-format msgid "incorrect test message transmission on socket for statistics collector" msgstr "теÑтовое Ñообщение через Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики прошло неверно" -#: postmaster/pgstat.c:536 +#: postmaster/pgstat.c:539 #, c-format msgid "could not set statistics collector socket to nonblocking mode: %m" msgstr "" "не удалоÑÑŒ переключить Ñокет Ñборщика ÑтатиÑтики в неблокирующий режим: %m" -#: postmaster/pgstat.c:546 +#: postmaster/pgstat.c:578 #, c-format msgid "disabling statistics collector for lack of working socket" msgstr "Ñборщик ÑтатиÑтики отключаетÑÑ Ð¸Ð·-за нехватки рабочего Ñокета" -#: postmaster/pgstat.c:693 +#: postmaster/pgstat.c:725 #, c-format msgid "could not fork statistics collector: %m" msgstr "не удалоÑÑŒ породить процеÑÑ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:1261 +#: postmaster/pgstat.c:1293 #, c-format msgid "unrecognized reset target: \"%s\"" msgstr "запрошен ÑÐ±Ñ€Ð¾Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтного Ñчётчика: \"%s\"" -#: postmaster/pgstat.c:1262 +#: postmaster/pgstat.c:1294 #, c-format msgid "Target must be \"archiver\" or \"bgwriter\"." msgstr "ДопуÑтимый Ñчётчик: \"archiver\" или \"bgwriter\"." -#: postmaster/pgstat.c:3587 +#: postmaster/pgstat.c:3619 #, c-format msgid "could not read statistics message: %m" msgstr "не удалоÑÑŒ прочитать Ñообщение ÑтатиÑтики: %m" -#: postmaster/pgstat.c:3918 postmaster/pgstat.c:4075 +#: 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:3985 postmaster/pgstat.c:4120 +#: 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:3994 postmaster/pgstat.c:4129 +#: 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:4002 postmaster/pgstat.c:4137 +#: 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:4226 postmaster/pgstat.c:4411 postmaster/pgstat.c:4564 +#: 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: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 +#: 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:4776 +#: postmaster/pgstat.c:4829 #, c-format msgid "" "using stale statistics instead of current ones because stats collector is " @@ -15797,44 +15535,44 @@ msgstr "" "иÑпользуетÑÑ Ð¿Ñ€Ð¾ÑÑ€Ð¾Ñ‡ÐµÐ½Ð½Ð°Ñ ÑтатиÑтика вмеÑто текущей, так как Ñборщик " "ÑтатиÑтики не отвечает" -#: postmaster/pgstat.c:5103 +#: 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 " @@ -15843,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 " @@ -15933,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" @@ -15980,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:1828 +#: postmaster/postmaster.c:1850 #, c-format msgid "" "performing immediate shutdown because data directory lock file is invalid" msgstr "" "немедленное отключение из-за ошибочного файла блокировки каталога данных" -#: postmaster/postmaster.c:1906 postmaster/postmaster.c:1937 +#: postmaster/postmaster.c:1928 postmaster/postmaster.c:1959 #, c-format msgid "incomplete startup packet" msgstr "неполный Ñтартовый пакет" -#: postmaster/postmaster.c:1918 +#: postmaster/postmaster.c:1940 #, c-format msgid "invalid length of startup packet" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ñтартового пакета" -#: postmaster/postmaster.c:1976 +#: postmaster/postmaster.c:1998 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "не удалоÑÑŒ отправить ответ в процеÑÑе SSL-ÑоглаÑованиÑ: %m" -#: postmaster/postmaster.c:2005 +#: 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" -#: postmaster/postmaster.c:2068 utils/misc/guc.c:5660 utils/misc/guc.c:5753 +#: 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:2071 +#: postmaster/postmaster.c:2093 #, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." msgstr "ДопуÑтимые значениÑ: \"false\", 0, \"true\", 1, \"database\"." -#: postmaster/postmaster.c:2091 +#: postmaster/postmaster.c:2113 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "" "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтруктура Ñтартового пакета: поÑледним байтом должен быть терминатор" -#: postmaster/postmaster.c:2119 +#: postmaster/postmaster.c:2141 #, c-format msgid "no PostgreSQL user name specified in startup packet" msgstr "в Ñтартовом пакете не указано Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ PostgreSQL" -#: postmaster/postmaster.c:2178 +#: postmaster/postmaster.c:2200 #, c-format msgid "the database system is starting up" msgstr "ÑиÑтема баз данных запуÑкаетÑÑ" -#: postmaster/postmaster.c:2183 +#: postmaster/postmaster.c:2205 #, c-format msgid "the database system is shutting down" msgstr "ÑиÑтема баз данных оÑтанавливаетÑÑ" -#: postmaster/postmaster.c:2188 +#: postmaster/postmaster.c:2210 #, c-format msgid "the database system is in recovery mode" msgstr "ÑиÑтема баз данных в режиме воÑÑтановлениÑ" -#: postmaster/postmaster.c:2193 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:2255 +#: postmaster/postmaster.c:2277 #, c-format msgid "wrong key in cancel request for process %d" msgstr "неправильный ключ в запроÑе на отмену процеÑÑа %d" -#: postmaster/postmaster.c:2263 +#: postmaster/postmaster.c:2285 #, c-format msgid "PID %d in cancel request did not match any process" msgstr "процеÑÑ Ñ ÐºÐ¾Ð´Ð¾Ð¼ %d, полученным в запроÑе на отмену, не найден" -#: postmaster/postmaster.c:2483 +#: postmaster/postmaster.c:2505 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "получен SIGHUP, файлы конфигурации перезагружаютÑÑ" -#: postmaster/postmaster.c:2508 +#: postmaster/postmaster.c:2530 #, c-format msgid "pg_hba.conf not reloaded" msgstr "pg_hba.conf не перезагружен" -#: postmaster/postmaster.c:2512 +#: postmaster/postmaster.c:2534 #, c-format msgid "pg_ident.conf not reloaded" msgstr "pg_ident.conf не перезагружен" -#: postmaster/postmaster.c:2553 +#: postmaster/postmaster.c:2575 #, c-format msgid "received smart shutdown request" msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° \"вежливое\" выключение" -#: postmaster/postmaster.c:2608 +#: postmaster/postmaster.c:2630 #, c-format msgid "received fast shutdown request" msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° быÑтрое выключение" -#: postmaster/postmaster.c:2638 +#: postmaster/postmaster.c:2660 #, c-format msgid "aborting any active transactions" msgstr "прерывание вÑех активных транзакций" -#: postmaster/postmaster.c:2672 +#: postmaster/postmaster.c:2694 #, c-format msgid "received immediate shutdown request" msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° немедленное выключение" -#: postmaster/postmaster.c:2736 +#: postmaster/postmaster.c:2758 #, c-format msgid "shutdown at recovery target" msgstr "выключение при доÑтижении цели воÑÑтановлениÑ" -#: postmaster/postmaster.c:2752 postmaster/postmaster.c:2775 +#: postmaster/postmaster.c:2774 postmaster/postmaster.c:2797 msgid "startup process" msgstr "Ñтартовый процеÑÑ" -#: postmaster/postmaster.c:2755 +#: postmaster/postmaster.c:2777 #, c-format msgid "aborting startup due to startup process failure" msgstr "прерывание запуÑка из-за ошибки в Ñтартовом процеÑÑе" -#: postmaster/postmaster.c:2816 +#: postmaster/postmaster.c:2838 #, c-format msgid "database system is ready to accept connections" msgstr "ÑиÑтема БД готова принимать подключениÑ" -#: postmaster/postmaster.c:2835 +#: postmaster/postmaster.c:2857 msgid "background writer process" msgstr "процеÑÑ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð¹ запиÑи" -#: postmaster/postmaster.c:2889 +#: postmaster/postmaster.c:2911 msgid "checkpointer process" msgstr "процеÑÑ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ñ‹Ñ… точек" -#: postmaster/postmaster.c:2905 +#: postmaster/postmaster.c:2927 msgid "WAL writer process" msgstr "процеÑÑ Ð·Ð°Ð¿Ð¸Ñи WAL" -#: postmaster/postmaster.c:2919 +#: postmaster/postmaster.c:2942 msgid "WAL receiver process" msgstr "процеÑÑ ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ WAL" -#: postmaster/postmaster.c:2934 +#: postmaster/postmaster.c:2957 msgid "autovacuum launcher process" msgstr "процеÑÑ Ð·Ð°Ð¿ÑƒÑка автоочиÑтки" -#: postmaster/postmaster.c:2949 +#: postmaster/postmaster.c:2972 msgid "archiver process" msgstr "процеÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸" -#: postmaster/postmaster.c:2965 +#: postmaster/postmaster.c:2988 msgid "statistics collector process" msgstr "процеÑÑ Ñбора ÑтатиÑтики" -#: postmaster/postmaster.c:2979 +#: postmaster/postmaster.c:3002 msgid "system logger process" msgstr "процеÑÑ ÑиÑтемного протоколированиÑ" -#: postmaster/postmaster.c:3041 +#: postmaster/postmaster.c:3064 msgid "worker process" msgstr "рабочий процеÑÑ" -#: postmaster/postmaster.c:3124 postmaster/postmaster.c:3144 -#: postmaster/postmaster.c:3151 postmaster/postmaster.c:3169 +#: postmaster/postmaster.c:3147 postmaster/postmaster.c:3167 +#: postmaster/postmaster.c:3174 postmaster/postmaster.c:3192 msgid "server process" msgstr "процеÑÑ Ñервера" -#: postmaster/postmaster.c:3223 +#: 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:3479 +#: postmaster/postmaster.c:3502 #, 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 +#: 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:3489 +#: 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:3499 +#: 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:3510 +#: 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:3520 +#: postmaster/postmaster.c:3543 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d) завершилÑÑ Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтным кодом ÑоÑтоÑÐ½Ð¸Ñ %d" -#: postmaster/postmaster.c:3707 +#: postmaster/postmaster.c:3730 #, c-format msgid "abnormal database system shutdown" msgstr "аварийное выключение ÑиÑтемы БД" -#: postmaster/postmaster.c:3747 +#: postmaster/postmaster.c:3770 #, c-format msgid "all server processes terminated; reinitializing" msgstr "вÑе Ñерверные процеÑÑÑ‹ завершены... переинициализациÑ" -#: postmaster/postmaster.c:3959 +#: postmaster/postmaster.c:3982 #, c-format msgid "could not fork new process for connection: %m" msgstr "породить новый процеÑÑ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ удалоÑÑŒ: %m" -#: postmaster/postmaster.c:4001 +#: postmaster/postmaster.c:4024 msgid "could not fork new process for connection: " msgstr "породить новый процеÑÑ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ удалоÑÑŒ: " -#: postmaster/postmaster.c:4115 +#: postmaster/postmaster.c:4138 #, c-format msgid "connection received: host=%s port=%s" msgstr "принÑто подключение: узел=%s порт=%s" -#: postmaster/postmaster.c:4120 +#: postmaster/postmaster.c:4143 #, c-format msgid "connection received: host=%s" msgstr "принÑто подключение: узел=%s" -#: postmaster/postmaster.c:4403 +#: postmaster/postmaster.c:4426 #, c-format msgid "could not execute server process \"%s\": %m" msgstr "запуÑтить Ñерверный процеÑÑ \"%s\" не удалоÑÑŒ: %m" -#: postmaster/postmaster.c:4947 +#: 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:5238 +#: postmaster/postmaster.c:5267 #, c-format msgid "could not fork startup process: %m" msgstr "породить Ñтартовый процеÑÑ Ð½Ðµ удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5242 +#: postmaster/postmaster.c:5271 #, c-format msgid "could not fork background writer process: %m" msgstr "породить процеÑÑ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð¹ запиÑи не удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5246 +#: postmaster/postmaster.c:5275 #, c-format msgid "could not fork checkpointer process: %m" msgstr "породить процеÑÑ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ñ‹Ñ… точек не удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5250 +#: postmaster/postmaster.c:5279 #, c-format msgid "could not fork WAL writer process: %m" msgstr "породить процеÑÑ Ð·Ð°Ð¿Ð¸Ñи WAL не удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5254 +#: postmaster/postmaster.c:5283 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "породить процеÑÑ ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ WAL не удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5258 +#: postmaster/postmaster.c:5287 #, c-format msgid "could not fork process: %m" msgstr "породить процеÑÑ Ð½Ðµ удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5420 postmaster/postmaster.c:5443 +#: postmaster/postmaster.c:5467 postmaster/postmaster.c:5490 #, c-format msgid "database connection requirement not indicated during registration" msgstr "" "при региÑтрации фонового процеÑÑа не указывалоÑÑŒ, что ему требуетÑÑ " "подключение к БД" -#: postmaster/postmaster.c:5427 postmaster/postmaster.c:5450 +#: postmaster/postmaster.c:5474 postmaster/postmaster.c:5497 #, c-format msgid "invalid processing mode in background worker" msgstr "неправильный режим обработки в фоновом процеÑÑе" -#: postmaster/postmaster.c:5502 +#: postmaster/postmaster.c:5569 #, c-format msgid "starting background worker process \"%s\"" msgstr "запуÑк фонового рабочего процеÑÑа \"%s\"" -#: postmaster/postmaster.c:5513 +#: postmaster/postmaster.c:5581 #, c-format msgid "could not fork worker process: %m" msgstr "породить рабочий процеÑÑ Ð½Ðµ удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5901 +#: 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:5933 +#: postmaster/postmaster.c:6030 #, c-format msgid "could not create inherited socket: error code %d\n" msgstr "Ñоздать наÑледуемый Ñокет не удалоÑÑŒ (код ошибки: %d)\n" -#: postmaster/postmaster.c:5962 +#: postmaster/postmaster.c:6059 #, c-format msgid "could not open backend variables file \"%s\": %s\n" msgstr "открыть файл Ñерверных переменных \"%s\" не удалоÑÑŒ: %s\n" -#: postmaster/postmaster.c:5969 +#: postmaster/postmaster.c:6066 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" msgstr "прочитать файл Ñерверных переменных \"%s\" не удалоÑÑŒ: %s\n" -#: postmaster/postmaster.c:5978 +#: postmaster/postmaster.c:6075 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "не удалоÑÑŒ Ñтереть файл \"%s\": %s\n" -#: postmaster/postmaster.c:5995 +#: postmaster/postmaster.c:6092 #, c-format msgid "could not map view of backend variables: error code %lu\n" msgstr "отобразить файл Ñерверных переменных не удалоÑÑŒ (код ошибки: %lu)\n" -#: postmaster/postmaster.c:6004 +#: postmaster/postmaster.c:6101 #, c-format msgid "could not unmap view of backend variables: error code %lu\n" msgstr "" "отключить отображение файла Ñерверных переменных не удалоÑÑŒ (код ошибки: " "%lu)\n" -#: postmaster/postmaster.c:6011 +#: 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:6172 +#: postmaster/postmaster.c:6269 #, c-format msgid "could not read exit code for process\n" msgstr "прочитать код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа не удалоÑÑŒ\n" -#: postmaster/postmaster.c:6177 +#: postmaster/postmaster.c:6274 #, c-format msgid "could not post child completion status\n" msgstr "отправить ÑоÑтоÑние Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° не удалоÑÑŒ\n" @@ -16564,19 +16313,19 @@ msgstr "ОжидалÑÑ 1 кортеж Ñ 2 полÑми, однако полу msgid "invalid socket: %s" msgstr "неверный Ñокет: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:426 storage/ipc/latch.c:1280 +#: 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" @@ -16596,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 " @@ -16615,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" @@ -16711,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" @@ -16749,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:2330 +#: 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:2426 -#: replication/logical/reorderbuffer.c:2446 +#: 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:2430 -#: replication/logical/reorderbuffer.c:2450 +#: 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" @@ -16791,14 +16540,14 @@ msgstr "" "не удалоÑÑŒ прочитать из файла подкачки буфера переÑортировки (прочитано " "байт: %d, требовалоÑÑŒ: %u)" -#: replication/logical/reorderbuffer.c:3106 +#: replication/logical/reorderbuffer.c:3107 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "" "не удалоÑÑŒ прочитать из файла \"%s\" (прочитано байт: %d, требовалоÑÑŒ: %d)" # skip-rule: capital-letter-first -#: replication/logical/snapbuild.c:598 +#: replication/logical/snapbuild.c:646 #, c-format msgid "exported logical decoding snapshot: \"%s\" with %u transaction ID" msgid_plural "" @@ -16810,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 "%u transaction needs to finish." -msgid_plural "%u transactions need to finish." -msgstr[0] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)." -msgstr[1] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)." -msgstr[2] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)." +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 "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" @@ -16858,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\"" @@ -16923,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 "перед завершением активно Ñлишком много Ñлотов репликации" @@ -16994,23 +16746,23 @@ 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:927 +#: replication/syncrep.c:937 #, c-format msgid "number of synchronous standbys (%d) must be greater than zero" msgstr "чиÑло Ñинхронных резервных Ñерверов (%d) должно быть больше нулÑ" @@ -17080,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 " @@ -17112,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 " @@ -17232,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 @@ -17398,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." @@ -17486,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 " @@ -17515,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 " @@ -17524,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 " @@ -17539,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 " @@ -17584,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 " @@ -17677,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 "Ñнимок Ñлишком Ñтар" @@ -17707,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" @@ -17859,17 +17619,17 @@ msgstr "не удалоÑÑŒ Ñоздать Ñегмент разделÑемой msgid "could not duplicate handle for \"%s\": %m" msgstr "не удалоÑÑŒ продублировать указатель Ð´Ð»Ñ \"%s\": %m" -#: storage/ipc/latch.c:778 +#: storage/ipc/latch.c:841 #, c-format msgid "epoll_ctl() failed: %m" msgstr "ошибка в epoll_ctl(): %m" -#: storage/ipc/latch.c:1002 +#: storage/ipc/latch.c:1065 #, c-format msgid "epoll_wait() failed: %m" msgstr "ошибка в epoll_wait(): %m" -#: storage/ipc/latch.c:1122 +#: storage/ipc/latch.c:1185 #, c-format msgid "poll() failed: %m" msgstr "ошибка в poll(): %m" @@ -17877,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 "нехватка разделÑемой памÑти" @@ -17911,13 +17671,13 @@ msgstr "" msgid "requested shared memory size overflows size_t" msgstr "запрошенный размер разделÑемой памÑти не умещаетÑÑ Ð² size_t" -#: storage/ipc/standby.c:530 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:531 tcop/postgres.c:2263 +#: storage/ipc/standby.c:531 tcop/postgres.c:2255 #, c-format msgid "User transaction caused buffer deadlock with recovery." msgstr "" @@ -18117,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 " @@ -18131,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 " @@ -18140,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 " @@ -18160,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:617 +#: 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:624 +#: 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" @@ -18195,11 +17955,11 @@ 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 "Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ завершитьÑÑ ÑƒÑпешно при Ñледующей попытке." @@ -18258,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 @@ -18279,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" @@ -18377,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 " @@ -18392,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:4314 +#: 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 " @@ -18489,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 "неверный формат двоичных данных в параметре 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 "Пользователь был подключён к базе данных, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть удалена." -#: 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 " @@ -18581,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 " @@ -18590,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-" @@ -18605,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), " @@ -18670,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 " @@ -18684,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:4222 +#: tcop/postgres.c:4208 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "неверный подтип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ CLOSE: %d" -#: tcop/postgres.c:4257 +#: tcop/postgres.c:4243 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "неверный подтип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ DESCRIBE: %d" -#: tcop/postgres.c:4335 +#: tcop/postgres.c:4321 #, c-format msgid "fastpath function calls not supported in a replication connection" msgstr "вызовы функции fastpath не поддерживаютÑÑ Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸Ñ†Ð¸Ñ€ÑƒÑŽÑ‰Ð¸Ñ… Ñоединений" -#: tcop/postgres.c:4339 +#: tcop/postgres.c:4325 #, c-format msgid "extended query protocol not supported in a replication connection" msgstr "" "протокол раÑширенных запроÑов не поддерживаетÑÑ Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸Ñ†Ð¸Ñ€ÑƒÑŽÑ‰Ð¸Ñ… Ñоединений" -#: tcop/postgres.c:4509 +#: tcop/postgres.c:4495 #, c-format msgid "" "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s" @@ -18936,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:14401 gram.y:14418 +#: tsearch/spell.c:1005 tsearch/spell.c:1070 gram.y:14414 gram.y:14431 #, c-format msgid "syntax error" msgstr "ошибка ÑинтакÑиÑа" @@ -19137,8 +18897,8 @@ msgstr "aclremove больше не поддерживаетÑÑ" 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\" не ÑущеÑтвует" @@ -19509,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:3499 +#: utils/adt/numeric.c:7107 utils/adt/numeric.c:8120 utils/adt/timestamp.c:3542 #, c-format msgid "division by zero" msgstr "деление на ноль" @@ -19519,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" @@ -19547,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" @@ -19579,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: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 +#: 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 вне диапазона" @@ -19621,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" @@ -19642,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:5259 -#: utils/adt/timestamp.c:5464 +#: 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:5301 utils/adt/timestamp.c:5495 +#: 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 "" @@ -20243,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:5561 utils/adt/timestamp.c:5642 +#: utils/adt/timestamp.c:5604 utils/adt/timestamp.c:5685 #, c-format msgid "step size cannot equal zero" msgstr "размер шага не может быть нулевым" @@ -20396,15 +20156,12 @@ msgid "key value must be scalar, not array, composite, or json" msgstr "" "значением ключа должен быть ÑкалÑÑ€ (не маÑÑив, композитный тип или 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 "не удалоÑÑŒ определить тип данных аргумента 1" - -#: utils/adt/json.c:2016 -#, 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 @@ -20424,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" @@ -20478,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" @@ -20644,7 +20391,7 @@ msgstr "Ñлемент пути в позиции %d - не целочиÑлен 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" @@ -21311,61 +21058,61 @@ 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:7302 +#: 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:7303 +#: 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:8367 utils/adt/ruleutils.c:8536 +#: 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 "ошибочное Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð°" @@ -21376,7 +21123,7 @@ msgstr "ошибочное Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð°" #: 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 +#: utils/adt/ri_triggers.c:2402 gram.y:3351 #, c-format msgid "MATCH PARTIAL not yet implemented" msgstr "выражение MATCH PARTIAL ещё не реализовано" @@ -21523,17 +21270,17 @@ msgstr "не удалоÑÑŒ Ñравнить различные типы Ñто msgid "cannot compare record types with different numbers of columns" msgstr "Ñравнивать типы запиÑей Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼ чиÑлом Ñтолбцов нельзÑ" -#: utils/adt/ruleutils.c:4289 +#: 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" -#: utils/adt/selfuncs.c:5421 +#: utils/adt/selfuncs.c:5521 #, c-format msgid "regular-expression matching not supported on type bytea" msgstr "Ñравнение Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрными выражениÑми не поддерживаетÑÑ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° bytea" @@ -21543,128 +21290,127 @@ msgstr "Ñравнение Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрными выражениÑми не 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:1611 -#: 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 +#: 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:1555 +#: 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:2850 +#: utils/adt/timestamp.c:2893 #, c-format msgid "cannot subtract infinite timestamps" msgstr "вычитать беÑконечные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ timestamp нельзÑ" -#: utils/adt/timestamp.c:4059 utils/adt/timestamp.c:4584 -#: utils/adt/timestamp.c:4768 utils/adt/timestamp.c:4793 +#: 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:4073 utils/adt/timestamp.c:4538 -#: utils/adt/timestamp.c:4803 +#: 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:4213 utils/adt/timestamp.c:4579 -#: utils/adt/timestamp.c:4990 utils/adt/timestamp.c:5016 +#: 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:4230 utils/adt/timestamp.c:4533 -#: utils/adt/timestamp.c:5025 +#: 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:4311 +#: utils/adt/timestamp.c:4354 #, c-format msgid "" "interval units \"%s\" not supported because months usually have fractional " @@ -21673,12 +21419,12 @@ msgstr "" "единицы интервала \"%s\" не поддерживаютÑÑ, так как в меÑÑцах дробное чиÑло " "недель" -#: utils/adt/timestamp.c:4317 utils/adt/timestamp.c:5131 +#: 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:4333 utils/adt/timestamp.c:5158 +#: utils/adt/timestamp.c:4376 utils/adt/timestamp.c:5201 #, c-format msgid "interval units \"%s\" not recognized" msgstr "единицы interval \"%s\" не раÑпознаны" @@ -22053,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 " @@ -22128,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 "" @@ -22221,17 +21967,17 @@ msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s нет функции вывода" 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" @@ -25053,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\"" @@ -25155,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\"." @@ -25203,17 +24955,17 @@ msgstr "не удалоÑÑŒ Ñчитать блок %ld временного Ñ„ msgid "cannot have more than %d runs for an external sort" msgstr "чиÑло потоков данных Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ¹ Ñортировки не может превышать %d" -#: utils/sort/tuplesort.c:4474 +#: utils/sort/tuplesort.c:4479 #, c-format msgid "could not create unique index \"%s\"" msgstr "Ñоздать уникальный Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не удалоÑÑŒ" -#: utils/sort/tuplesort.c:4476 +#: utils/sort/tuplesort.c:4481 #, c-format msgid "Key %s is duplicated." msgstr "Ключ %s дублируетÑÑ." -#: utils/sort/tuplesort.c:4477 +#: utils/sort/tuplesort.c:4482 #, c-format msgid "Duplicate keys exist." msgstr "Данные Ñодержат дублирующиеÑÑ ÐºÐ»ÑŽÑ‡Ð¸." @@ -25225,19 +24977,19 @@ 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:618 #, c-format @@ -25304,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:10295 gram.y:10303 +#: 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:4809 +#: gram.y:4818 msgid "duplicate trigger events specified" msgstr "ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° повторÑÑŽÑ‚ÑÑ" -#: gram.y:4909 +#: gram.y:4918 #, c-format msgid "conflicting constraint properties" msgstr "противоречащие характериÑтики ограничениÑ" -#: gram.y:5041 +#: gram.y:5050 #, c-format msgid "CREATE ASSERTION is not yet implemented" msgstr "оператор CREATE ASSERTION ещё не реализован" -#: gram.y:5057 +#: gram.y:5066 #, c-format msgid "DROP ASSERTION is not yet implemented" msgstr "оператор DROP ASSERTION ещё не реализован" -#: gram.y:5403 +#: gram.y:5412 #, c-format msgid "RECHECK is no longer required" msgstr "RECHECK более не требуетÑÑ" -#: gram.y:5404 +#: gram.y:5413 #, c-format msgid "Update your data type." msgstr "Обновите тип данных." -#: gram.y:6983 +#: gram.y:6992 #, c-format msgid "aggregates cannot have output arguments" msgstr "у агрегатных функций не может быть выходных аргументов" -#: gram.y:8853 gram.y:8871 +#: gram.y:8862 gram.y:8880 #, c-format msgid "WITH CHECK OPTION not supported on recursive views" msgstr "" "предложение WITH CHECK OPTION не поддерживаетÑÑ Ð´Ð»Ñ Ñ€ÐµÐºÑƒÑ€Ñивных предÑтавлений" -#: gram.y:9389 +#: gram.y:9398 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "нераÑпознанный параметр VACUUM: \"%s\"" -#: gram.y:10403 +#: gram.y:10412 #, c-format msgid "LIMIT #,# syntax is not supported" msgstr "ÑинтакÑÐ¸Ñ LIMIT #,# не поддерживаетÑÑ" -#: gram.y:10404 +#: gram.y:10413 #, c-format msgid "Use separate LIMIT and OFFSET clauses." msgstr "ИÑпользуйте отдельные Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ LIMIT и OFFSET." -#: gram.y:10667 gram.y:10692 +#: gram.y:10676 gram.y:10701 #, c-format msgid "VALUES in FROM must have an alias" msgstr "ÑпиÑок VALUES во FROM должен иметь пÑевдоним" -#: gram.y:10668 gram.y:10693 +#: gram.y:10677 gram.y:10702 #, c-format msgid "For example, FROM (VALUES ...) [AS] foo." msgstr "Ðапример, FROM (VALUES ...) [AS] foo." -#: gram.y:10673 gram.y:10698 +#: gram.y:10682 gram.y:10707 #, c-format msgid "subquery in FROM must have an alias" msgstr "Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð²Ð¾ FROM должен иметь пÑевдоним" -#: gram.y:10674 gram.y:10699 +#: gram.y:10683 gram.y:10708 #, c-format msgid "For example, FROM (SELECT ...) [AS] foo." msgstr "Ðапример, FROM (SELECT ...) [AS] foo." -#: gram.y:11273 +#: gram.y:11282 #, c-format msgid "precision for type float must be at least 1 bit" msgstr "тип float должен иметь точноÑть минимум 1 бит" -#: gram.y:11282 +#: gram.y:11291 #, c-format msgid "precision for type float must be less than 54 bits" msgstr "тип float должен иметь точноÑть меньше 54 бит" -#: gram.y:11786 +#: gram.y:11795 #, c-format msgid "wrong number of parameters on left side of OVERLAPS expression" msgstr "неверное чиÑло параметров в левой чаÑти Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ OVERLAPS" -#: gram.y:11791 +#: gram.y:11800 #, c-format msgid "wrong number of parameters on right side of OVERLAPS expression" msgstr "неверное чиÑло параметров в правой чаÑти Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ OVERLAPS" -#: gram.y:11966 +#: gram.y:11975 #, c-format msgid "UNIQUE predicate is not yet implemented" msgstr "предикат UNIQUE ещё не реализован" -#: gram.y:12296 +#: gram.y:12309 #, c-format msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP" msgstr "ORDER BY Ñ WITHIN GROUP можно указать только один раз" -#: gram.y:12301 +#: gram.y:12314 #, c-format msgid "cannot use DISTINCT with WITHIN GROUP" msgstr "DISTINCT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñ WITHIN GROUP" -#: gram.y:12306 +#: gram.y:12319 #, c-format msgid "cannot use VARIADIC with WITHIN GROUP" msgstr "VARIADIC Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñ WITHIN GROUP" -#: gram.y:12812 +#: gram.y:12825 #, c-format msgid "RANGE PRECEDING is only supported with UNBOUNDED" msgstr "RANGE PRECEDING поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ UNBOUNDED" -#: gram.y:12818 +#: gram.y:12831 #, c-format msgid "RANGE FOLLOWING is only supported with UNBOUNDED" msgstr "RANGE FOLLOWING поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ UNBOUNDED" -#: gram.y:12845 gram.y:12868 +#: gram.y:12858 gram.y:12881 #, c-format msgid "frame start cannot be UNBOUNDED FOLLOWING" msgstr "началом рамки не может быть UNBOUNDED FOLLOWING" -#: gram.y:12850 +#: gram.y:12863 #, c-format msgid "frame starting from following row cannot end with current row" msgstr "" "рамка, начинающаÑÑÑ Ñо Ñледующей Ñтроки, не может заканчиватьÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹" -#: gram.y:12873 +#: gram.y:12886 #, c-format msgid "frame end cannot be UNBOUNDED PRECEDING" msgstr "концом рамки не может быть UNBOUNDED PRECEDING" -#: gram.y:12879 +#: gram.y:12892 #, c-format msgid "frame starting from current row cannot have preceding rows" msgstr "" "рамка, начинающаÑÑÑ Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ñтроки, не может иметь предшеÑтвующих Ñтрок" -#: gram.y:12886 +#: gram.y:12899 #, c-format msgid "frame starting from following row cannot have preceding rows" msgstr "" "рамка, начинающаÑÑÑ Ñо Ñледующей Ñтроки, не может иметь предшеÑтвующих Ñтрок" -#: gram.y:13551 +#: gram.y:13564 #, c-format msgid "type modifier cannot have parameter name" msgstr "параметр функции-модификатора типа должен быть безымÑнным" -#: gram.y:13557 +#: gram.y:13570 #, c-format msgid "type modifier cannot have ORDER BY" msgstr "модификатор типа не может включать ORDER BY" -#: gram.y:13621 gram.y:13627 +#: gram.y:13634 gram.y:13640 #, c-format msgid "%s cannot be used as a role name here" msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать здеÑÑŒ как Ð¸Ð¼Ñ Ñ€Ð¾Ð»Ð¸" -#: gram.y:14249 gram.y:14438 +#: gram.y:14262 gram.y:14451 msgid "improper use of \"*\"" msgstr "недопуÑтимое иÑпользование \"*\"" -#: gram.y:14502 +#: gram.y:14515 #, c-format msgid "" "an ordered-set aggregate with a VARIADIC direct argument must have one " @@ -25512,50 +25264,50 @@ msgstr "" "ÑÐ¾Ñ€Ñ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð½ÐµÐ¿Ð¾ÑредÑтвенным аргументом VARIADIC должна " "иметь один агрегатный аргумент VARIADIC того же типа данных" -#: gram.y:14539 +#: gram.y:14552 #, c-format msgid "multiple ORDER BY clauses not allowed" msgstr "ORDER BY можно указать только один раз" -#: gram.y:14550 +#: gram.y:14563 #, c-format msgid "multiple OFFSET clauses not allowed" msgstr "OFFSET можно указать только один раз" -#: gram.y:14559 +#: gram.y:14572 #, c-format msgid "multiple LIMIT clauses not allowed" msgstr "LIMIT можно указать только один раз" -#: gram.y:14568 +#: gram.y:14581 #, c-format msgid "multiple WITH clauses not allowed" msgstr "WITH можно указать только один раз" -#: gram.y:14760 +#: gram.y:14773 #, c-format msgid "OUT and INOUT arguments aren't allowed in TABLE functions" msgstr "в табличных функциÑÑ… не может быть аргументов OUT и INOUT" -#: gram.y:14861 +#: gram.y:14874 #, c-format msgid "multiple COLLATE clauses not allowed" msgstr "COLLATE можно указать только один раз" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14899 gram.y:14912 +#: 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:14925 +#: 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:14938 +#: gram.y:14951 #, c-format msgid "%s constraints cannot be marked NO INHERIT" msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ %s не могут иметь характериÑтики NO INHERIT" @@ -25779,6 +25531,252 @@ msgstr "неÑтандартное иÑпользование ÑпецÑимво 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 "неправильный диапазон индекÑов маÑÑивов" diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c index 1ad898d350..850eafddc3 100644 --- a/src/backend/port/sysv_shmem.c +++ b/src/backend/port/sysv_shmem.c @@ -102,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) @@ -203,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)); diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c index 5ea5abff8d..ff266009fc 100644 --- a/src/backend/postmaster/bgworker.c +++ b/src/backend/postmaster/bgworker.c @@ -95,23 +95,24 @@ struct BackgroundWorkerHandle static BackgroundWorkerArray *BackgroundWorkerData; /* - * List of internal background workers. These are used for mapping the - * function name to actual function when building with EXEC_BACKEND and also - * to allow these to be loaded outside of shared_preload_libraries. + * List of internal background worker entry points. We need this for + * reasons explained in LookupBackgroundWorkerFunction(), below. */ -typedef struct InternalBGWorkerMain +static const struct { - char *bgw_function_name; - bgworker_main_type bgw_main; -} InternalBGWorkerMain; - -static const InternalBGWorkerMain InternalBGWorkers[] = { - {"ParallelWorkerMain", ParallelWorkerMain}, - /* Dummy entry marking end of the array. */ - {NULL, NULL} + const char *fn_name; + bgworker_main_type fn_addr; +} InternalBGWorkers[] = + +{ + { + "ParallelWorkerMain", ParallelWorkerMain + } }; -static bgworker_main_type GetInternalBgWorkerMain(BackgroundWorker *worker); +/* Private functions. */ +static bgworker_main_type LookupBackgroundWorkerFunction(char *libraryname, char *funcname); + /* * Calculate shared memory needed. @@ -715,27 +716,18 @@ StartBackgroundWorker(void) #endif } - /* For internal workers set the entry point to known function address. */ - entrypt = GetInternalBgWorkerMain(worker); - /* - * Otherwise, if bgw_main is set, we use that value as the initial - * entrypoint. This does not work well EXEC_BACKEND outside Windows but - * we keep the logic for backwards compatibility. In other cases use - * the entry point specified by 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 (entrypt == NULL) - { - 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); - } + if (worker->bgw_main != NULL) + entrypt = worker->bgw_main; + else + entrypt = LookupBackgroundWorkerFunction(worker->bgw_library_name, + worker->bgw_function_name); /* * Note that in normal processes, we would call InitPostgres here. For a @@ -1077,26 +1069,45 @@ TerminateBackgroundWorker(BackgroundWorkerHandle *handle) } /* - * Search the known internal worker array and return its main function - * pointer if found. + * Look up (and possibly load) a bgworker entry point function. * - * Returns NULL if not known internal worker. + * 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 -GetInternalBgWorkerMain(BackgroundWorker *worker) +LookupBackgroundWorkerFunction(char *libraryname, char *funcname) { - int i; + /* + * If the function is to be loaded from postgres itself, search the + * InternalBGWorkers array. + */ + if (strcmp(libraryname, "postgres") == 0) + { + int i; - /* Internal workers always have to use postgres as library name. */ - if (strncmp(worker->bgw_library_name, "postgres", BGW_MAXLEN) != 0) - return NULL; + for (i = 0; i < lengthof(InternalBGWorkers); i++) + { + if (strcmp(InternalBGWorkers[i].fn_name, funcname) == 0) + return InternalBGWorkers[i].fn_addr; + } - for (i = 0; InternalBGWorkers[i].bgw_function_name; i++) - { - if (strncmp(InternalBGWorkers[i].bgw_function_name, - worker->bgw_function_name, BGW_MAXLEN) == 0) - return InternalBGWorkers[i].bgw_main; + /* We can only reach this by programming error. */ + elog(ERROR, "internal function \"%s\" not found", funcname); } - return NULL; + /* Otherwise load from external library. */ + return (bgworker_main_type) + load_external_function(libraryname, funcname, true, NULL); } diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index 794920b65c..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); } @@ -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 533252a258..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(); @@ -1769,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 @@ -2809,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, @@ -2909,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) { @@ -4424,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; @@ -4441,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); @@ -4532,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; } /* @@ -4956,7 +4987,7 @@ sigusr1_handler(SIGNAL_ARGS) } if (StartWorkerNeeded || HaveCrashedWorker) - maybe_start_bgworker(); + maybe_start_bgworkers(); if (CheckPostmasterSignal(PMSIGNAL_WAKEN_ARCHIVER) && PgArchPID != 0) @@ -4997,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) && @@ -5355,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 */ @@ -5491,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))); @@ -5509,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: @@ -5535,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; } /* @@ -5589,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 @@ -5601,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; } @@ -5633,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) @@ -5660,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); @@ -5686,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; } @@ -5699,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; } /* @@ -6214,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"))); @@ -6223,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 08d6733259..87a753787f 100644 --- a/src/backend/replication/basebackup.c +++ b/src/backend/replication/basebackup.c @@ -888,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; @@ -940,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 || 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 2a8863bf4e..072187e066 100644 --- a/src/backend/replication/logical/decode.c +++ b/src/backend/replication/logical/decode.c @@ -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 e31e526a55..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 */ diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c index 78d9e9f17b..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; diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c index 628fb9796f..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 */ @@ -1798,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); @@ -2197,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); @@ -2680,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) diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c index d9a6db2be9..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 */ @@ -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; /* @@ -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 incrementally 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 3dfff04405..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. diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index 256db94979..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); @@ -813,6 +817,7 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd) LogicalDecodingContext *ctx; ctx = CreateInitDecodingContext(cmd->plugin, NIL, + true, /* build snapshot */ logical_read_xlog_page, WalSndPrepareWrite, WalSndWriteData); @@ -970,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); @@ -1026,7 +1031,7 @@ StartLogicalReplication(StartReplicationCmd *cmd) ReplicationSlotRelease(); replication_active = false; - if (walsender_ready_to_stop) + if (got_STOPPING) proc_exit(0); WalSndSetState(WALSNDSTATE_STARTUP); @@ -1113,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(); } @@ -1154,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) @@ -1196,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(); } @@ -1206,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(); @@ -1213,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; /* @@ -1249,14 +1264,20 @@ WalSndWaitForWal(XLogRecPtr loc) } /* - * 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 */ @@ -1265,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 | @@ -1273,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); } @@ -1294,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 @@ -1830,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(); } @@ -1845,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; /* @@ -1889,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); } @@ -2198,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,8 +2504,17 @@ XLogSendLogical(void) * If the record we just wanted read is at or beyond the flushed * point, then we're caught up. */ - if (logical_decoding_ctx->reader->EndRecPtr >= GetFlushRecPtr()) { + 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); } } @@ -2570,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 @@ -2608,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; @@ -2620,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 */ @@ -2707,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) @@ -2740,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/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 170e773c4a..b07628fd7b 100644 --- a/src/backend/storage/file/fd.c +++ b/src/backend/storage/file/fd.c @@ -2654,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; @@ -2702,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) @@ -2743,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) @@ -2784,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) @@ -2971,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; @@ -2981,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/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 3e0c4689db..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 diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index 8a26a37acd..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; @@ -2114,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]; @@ -2149,7 +2151,6 @@ GetOldestActiveTransactionId(void) * smaller than oldestRunningXid */ } - LWLockRelease(ProcArrayLock); return oldestRunningXid; @@ -2172,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; @@ -2195,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; 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/standby.c b/src/backend/storage/ipc/standby.c index 174e42a16b..8e42e5745f 100644 --- a/src/backend/storage/ipc/standby.c +++ b/src/backend/storage/ipc/standby.c @@ -586,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/predicate.c b/src/backend/storage/lmgr/predicate.c index 0ebf59f875..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); } /* 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/postgres.c b/src/backend/tcop/postgres.c index f6be98bdd4..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); /* ---------------------------------------------------------------- @@ -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 */ @@ -4045,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); } @@ -4500,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 e85d2f3323..cb73f11bdf 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -2864,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/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/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/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/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/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/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/rangetypes_selfuncs.c b/src/backend/utils/adt/rangetypes_selfuncs.c index 1aab4fe277..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. */ @@ -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/ruleutils.c b/src/backend/utils/adt/ruleutils.c index bc85a34739..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); @@ -4217,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; @@ -4253,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 */ @@ -4269,6 +4276,7 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, { case '1': appendStringInfoString(buf, "SELECT"); + viewResultDesc = RelationGetDescr(ev_relation); break; case '2': @@ -4358,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"); @@ -4376,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); } @@ -4401,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); @@ -5832,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) @@ -5852,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; } @@ -8248,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 @@ -9109,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 @@ -9172,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 */ @@ -9357,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, ')'); @@ -9553,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 (;;) { @@ -9607,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/tsquery.c b/src/backend/utils/adt/tsquery.c index f0bd52877f..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", 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/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/relcache.c b/src/backend/utils/cache/relcache.c index 8c8ef66c8f..95ff838cea 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -5525,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 @@ -5567,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 69649290da..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) { 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/misc/guc.c b/src/backend/utils/misc/guc.c index 4f1891f844..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."), 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 fa6c0eaa80..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 - @@ -367,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/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 64ef6e5032..4dd5407f74 100644 --- a/src/backend/utils/sort/tuplesort.c +++ b/src/backend/utils/sort/tuplesort.c @@ -3800,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); @@ -3809,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 2b7fda7c63..de6441b270 100644 --- a/src/backend/utils/time/snapmgr.c +++ b/src/backend/utils/time/snapmgr.c @@ -1569,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; @@ -1590,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); diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index 27d134e17d..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); 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/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/ru.po b/src/bin/initdb/po/ru.po index e56222bb9d..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: 2017-02-01 23:13+0000\n" -"PO-Revision-Date: 2016-11-24 11:56+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" 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 613f2e159c..4e3a45f989 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -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) { 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 8c57974f4b..425d7fa5c9 100644 --- a/src/bin/pg_basebackup/po/fr.po +++ b/src/bin/pg_basebackup/po/fr.po @@ -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-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" @@ -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.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 @@ -29,32 +29,32 @@ msgstr "mémoire épuisée\n" 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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 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" @@ -82,17 +82,17 @@ msgstr "" "\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" -#: 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" -#: pg_basebackup.c:238 +#: pg_basebackup.c:240 #, c-format msgid "" " -r, --max-rate=RATE maximum transfer rate to transfer data directory\n" @@ -102,19 +102,19 @@ msgstr "" " 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" -#: pg_basebackup.c:243 +#: pg_basebackup.c:245 #, c-format msgid "" " -T, --tablespace-mapping=OLDDIR=NEWDIR\n" @@ -123,14 +123,14 @@ msgstr "" " -T, --tablespace-mapping=ANCIENREP=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" " dans la sauvegarde (mode fetch)\n" -#: pg_basebackup.c:246 +#: pg_basebackup.c:248 #, c-format msgid "" " -X, --xlog-method=fetch|stream\n" @@ -140,26 +140,26 @@ msgstr "" " inclut les journaux de transactions requis avec\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" " 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" -#: pg_basebackup.c:251 +#: pg_basebackup.c:253 #, c-format msgid "" "\n" @@ -168,39 +168,39 @@ msgstr "" "\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" -#: 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,26 +209,26 @@ 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" -#: 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" -#: 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" -#: pg_basebackup.c:263 +#: pg_basebackup.c:265 #, c-format msgid "" " -s, --status-interval=INTERVAL\n" @@ -237,24 +237,24 @@ msgstr "" " -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" @@ -263,384 +263,394 @@ msgstr "" "\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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" "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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" @@ -654,7 +664,7 @@ msgstr "" "%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" @@ -670,19 +680,19 @@ msgstr "" " -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" -#: 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" @@ -707,14 +717,14 @@ 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" " 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 "" @@ -746,7 +756,7 @@ msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n" msgid "%s: could not close directory \"%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" @@ -766,7 +776,7 @@ msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" msgid "%s: starting log streaming at %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" @@ -789,28 +799,28 @@ msgstr "" "%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" -#: 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" -#: 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" #. 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" -#: pg_recvlogical.c:67 +#: pg_recvlogical.c:70 #, c-format msgid "" "%s controls PostgreSQL logical decoding streams.\n" @@ -819,7 +829,7 @@ msgstr "" "%s contrôle le flux des modifications logiques de PostgreSQL.\n" "\n" -#: pg_recvlogical.c:71 +#: pg_recvlogical.c:74 #, c-format msgid "" "\n" @@ -828,19 +838,19 @@ msgstr "" "\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" " 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" -#: pg_recvlogical.c:77 +#: pg_recvlogical.c:80 #, c-format msgid "" " -F --fsync-interval=SECS\n" @@ -849,14 +859,14 @@ msgstr "" " -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" " 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: pg_recvlogical.c:271 +#: pg_recvlogical.c:274 #, c-format msgid "%s: streaming initiated\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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: pg_recvlogical.c:686 +#: pg_recvlogical.c:689 #, c-format msgid "%s: invalid fsync interval \"%s\"\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" -#: 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" -#: pg_recvlogical.c:819 +#: pg_recvlogical.c:822 #, c-format msgid "%s: no target file specified\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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" "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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" "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" -#: 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" -#: 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" -#: 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" "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" "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/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 09b27bd358..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-10-24 02:44+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" @@ -114,10 +114,10 @@ msgstr "" #, 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:244 pg_receivexlog.c:74 #, c-format @@ -282,7 +282,7 @@ msgstr "" msgid "%s: could not read from ready pipe: %s\n" msgstr "%s: не удалоÑÑŒ прочитать из готового канала: %s\n" -#: pg_basebackup.c:321 pg_basebackup.c:424 pg_basebackup.c:1895 +#: 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" @@ -293,7 +293,7 @@ msgstr "%s: не удалоÑÑŒ разобрать положение в жур msgid "%s: could not create pipe for background process: %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать канал Ð´Ð»Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð³Ð¾ процеÑÑа: %s\n" -#: pg_basebackup.c:462 pg_basebackup.c:517 pg_basebackup.c:1265 +#: 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" @@ -377,101 +377,108 @@ msgstr "%s: ÑкороÑть передачи \"%s\" вне диапазона\n msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ запиÑать файл Ñжатого архива \"%s\": %s\n" -#: pg_basebackup.c:762 pg_basebackup.c:1359 pg_basebackup.c:1584 +#: 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:817 pg_basebackup.c:838 pg_basebackup.c:866 +#: 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:887 +#: pg_basebackup.c:891 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать файл Ñжатого архива \"%s\": %s\n" -#: pg_basebackup.c:898 pg_basebackup.c:1319 pg_basebackup.c:1577 +#: 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:910 pg_basebackup.c:1174 +#: 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:967 +#: pg_basebackup.c:971 #, c-format msgid "%s: could not close compressed file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ закрыть Ñжатый файл \"%s\": %s\n" -#: pg_basebackup.c:980 pg_recvlogical.c:580 receivelog.c:206 receivelog.c:354 +#: 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:991 pg_basebackup.c:1203 pg_recvlogical.c:446 +#: 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:1217 +#: pg_basebackup.c:1221 #, c-format msgid "%s: invalid tar block header size: %d\n" msgstr "%s: неверный размер заголовка блока tar: %d\n" -#: pg_basebackup.c:1273 +#: 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:1297 +#: 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:1306 +#: pg_basebackup.c:1310 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: нераÑпознанный индикатор ÑвÑзи \"%c\"\n" -#: pg_basebackup.c:1326 +#: 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:1385 +#: pg_basebackup.c:1389 #, c-format msgid "%s: COPY stream ended before last file was finished\n" msgstr "%s: поток COPY закончилÑÑ Ð´Ð¾ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ñледнего файла\n" -#: pg_basebackup.c:1471 pg_basebackup.c:1491 pg_basebackup.c:1498 -#: pg_basebackup.c:1552 +#: 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:1629 +#: pg_basebackup.c:1633 #, c-format msgid "%s: incompatible server version %s\n" msgstr "%s: неÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñервера %s\n" -#: pg_basebackup.c:1676 pg_recvlogical.c:264 receivelog.c:541 receivelog.c:592 +#: 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:1687 +#: pg_basebackup.c:1699 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: не удалоÑÑŒ инициализировать базовое резервное копирование: %s" -#: pg_basebackup.c:1694 +#: pg_basebackup.c:1706 #, c-format msgid "" "%s: server returned unexpected response to BASE_BACKUP command; got %d rows " @@ -482,103 +489,108 @@ msgstr "" #: 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:1723 +#: pg_basebackup.c:1738 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: не удалоÑÑŒ получить заголовок резервной копии: %s" -#: pg_basebackup.c:1729 +#: pg_basebackup.c:1744 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: Ñервер не вернул данные\n" -#: pg_basebackup.c:1761 +#: 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:1773 +#: pg_basebackup.c:1788 #, c-format msgid "%s: starting background WAL receiver\n" msgstr "%s: запуÑк фонового процеÑÑа ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ WAL\n" -#: pg_basebackup.c:1804 +#: pg_basebackup.c:1819 #, c-format msgid "%s: could not get transaction log end position from server: %s" msgstr "" "%s: не удалоÑÑŒ получить конечную позицию в журнале транзакций Ñ Ñервера: %s" -#: pg_basebackup.c:1811 +#: pg_basebackup.c:1826 #, c-format msgid "%s: no transaction log end position returned from server\n" msgstr "%s: Ñервер не вернул конечную позицию в журнале транзакций\n" -#: pg_basebackup.c:1823 +#: pg_basebackup.c:1838 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: ошибка в конце передачи: %s" -#: pg_basebackup.c:1847 +#: pg_basebackup.c:1862 #, c-format msgid "%s: waiting for background process to finish streaming ...\n" msgstr "%s: ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð²Ð¾Ð¹ передачи фоновым процеÑÑом...\n" -#: pg_basebackup.c:1853 +#: pg_basebackup.c:1868 #, c-format msgid "%s: could not send command to background pipe: %s\n" msgstr "%s: не удалоÑÑŒ отправить команду в канал фонового процеÑÑа: %s\n" -#: pg_basebackup.c:1862 +#: pg_basebackup.c:1877 #, c-format msgid "%s: could not wait for child process: %s\n" msgstr "%s: Ñбой при ожидании дочернего процеÑÑа: %s\n" -#: pg_basebackup.c:1868 +#: pg_basebackup.c:1883 #, c-format msgid "%s: child %d died, expected %d\n" msgstr "%s: завершилÑÑ Ð´Ð¾Ñ‡ÐµÑ€Ð½Ð¸Ð¹ процеÑÑ %d вмеÑто ожидаемого %d\n" -#: pg_basebackup.c:1874 +#: pg_basebackup.c:1889 #, c-format msgid "%s: child process did not exit normally\n" msgstr "%s: дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½ ненормально\n" -#: pg_basebackup.c:1880 +#: pg_basebackup.c:1895 #, c-format msgid "%s: child process exited with error %d\n" msgstr "%s: дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ %d\n" -#: pg_basebackup.c:1907 +#: pg_basebackup.c:1922 #, c-format msgid "%s: could not wait for child thread: %s\n" msgstr "%s: Ñбой при ожидании дочернего потока: %s\n" -#: pg_basebackup.c:1914 +#: pg_basebackup.c:1929 #, c-format msgid "%s: could not get child thread exit status: %s\n" msgstr "%s: не удалоÑÑŒ получить ÑоÑтоÑние Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð¾Ñ‡ÐµÑ€Ð½ÐµÐ³Ð¾ потока: %s\n" -#: pg_basebackup.c:1920 +#: pg_basebackup.c:1935 #, c-format msgid "%s: child thread exited with error %u\n" msgstr "%s: дочерний поток завершилÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ %u\n" -#: pg_basebackup.c:2010 +#: 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:2031 pg_basebackup.c:2043 +#: 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:2058 +#: 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:2080 +#: pg_basebackup.c:2095 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: неверный уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ \"%s\"\n" -#: pg_basebackup.c:2092 +#: pg_basebackup.c:2107 #, c-format msgid "" "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" @@ -599,14 +611,14 @@ msgstr "" "%s: неверный аргумент режима контрольных точек \"%s\", должен быть \"fast\" " "или \"spread\"\n" -#: pg_basebackup.c:2119 pg_receivexlog.c:445 pg_recvlogical.c:763 +#: 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: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_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:790 pg_recvlogical.c:804 #: pg_recvlogical.c:815 pg_recvlogical.c:823 pg_recvlogical.c:831 @@ -615,33 +627,33 @@ msgstr "%s: неверный интервал Ñообщений о ÑоÑÑ‚Ð¾Ñ msgid "Try \"%s --help\" for more information.\n" msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробуйте \"%s --help\".\n" -#: pg_basebackup.c:2147 pg_receivexlog.c:489 pg_recvlogical.c:802 +#: 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:2159 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:2171 +#: pg_basebackup.c:2186 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: Ñжимать можно только резервные копии в архиве tar\n" -#: pg_basebackup.c:2181 +#: 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:2191 +#: 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:2203 +#: 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:2214 +#: pg_basebackup.c:2229 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "" "%s: раÑположение каталога журнала транзакций должно определÑтьÑÑ Ð°Ð±Ñолютным " "путём\n" -#: pg_basebackup.c:2226 +#: pg_basebackup.c:2241 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: Ñта Ñборка программы не поддерживает Ñжатие\n" -#: pg_basebackup.c:2253 +#: pg_basebackup.c:2268 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать ÑимволичеÑкую ÑÑылку \"%s\": %s\n" -#: pg_basebackup.c:2258 +#: pg_basebackup.c:2273 #, c-format msgid "%s: symlinks are not supported on this platform\n" msgstr "%s: ÑимволичеÑкие ÑÑылки не поддерживаютÑÑ Ð² Ñтой ОС\n" @@ -694,7 +706,7 @@ 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:82 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/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/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/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/ru.po b/src/bin/pg_controldata/po/ru.po index f4c1d86eef..20dc403667 100644 --- a/src/bin/pg_controldata/po/ru.po +++ b/src/bin/pg_controldata/po/ru.po @@ -4,14 +4,15 @@ # 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: 2017-02-01 23:14+0000\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" "MIME-Version: 1.0\n" @@ -19,7 +20,6 @@ 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/controldata_utils.c:56 #, 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/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/ru.po b/src/bin/pg_ctl/po/ru.po index fc2fa9239e..5b0c8405ae 100644 --- a/src/bin/pg_ctl/po/ru.po +++ b/src/bin/pg_ctl/po/ru.po @@ -6,7 +6,7 @@ # Sergey Burladyan , 2009, 2012. # Andrey Sudnik , 2010. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" 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 a062a6b330..c171978060 100644 --- a/src/bin/pg_dump/dumputils.c +++ b/src/bin/pg_dump/dumputils.c @@ -394,13 +394,19 @@ buildDefaultACLCommands(const char *type, const char *nspname, 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); @@ -723,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, @@ -762,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/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index c360b92dd6..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); @@ -616,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 */ @@ -643,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); + } } } @@ -711,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 @@ -735,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) @@ -801,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) { @@ -817,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) @@ -905,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); } } @@ -2328,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 @@ -2897,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) @@ -3267,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) @@ -3311,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 @@ -3470,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 || @@ -3505,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); } } @@ -3514,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); @@ -3544,6 +3589,9 @@ replace_line_endings(const char *str) return result; } +/* + * Write the file header for a custom-format archive + */ void WriteHead(ArchiveHandle *AH) { @@ -3715,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; @@ -3742,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 { @@ -3769,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; + + 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); - (void) restore_toc_entry(AH, next_work_item, false); + (void) restore_toc_entry(AH, next_work_item, false); - /* there should be no touch of ready_list here, so pass NULL */ - reduce_dependencies(AH, next_work_item, NULL); + /* 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); + } } /* @@ -3806,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; } @@ -3898,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 @@ -3950,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) { @@ -3972,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) { @@ -3982,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. */ } /* @@ -4042,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. * @@ -4418,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) @@ -4431,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_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 1148d6a164..104a9f14d8 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -3659,9 +3659,14 @@ getNamespaces(Archive *fout, int *numNamespaces) * 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 <> 'public'::regnamespace"); + appendPQExpBuffer(query," AND pip.objoid <> " + "coalesce((select oid from pg_namespace " + "where nspname = 'public'),0)"); appendPQExpBuffer(query,") "); @@ -12771,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 */ @@ -13005,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", @@ -13032,6 +13047,8 @@ dumpOpclass(Archive *fout, OpclassInfo *opcinfo) opcinfo->dobj.namespace->dobj.name, opcinfo->rolname, opcinfo->dobj.catId, 0, opcinfo->dobj.dumpId); + free(opcintype); + free(opcfamily); free(amname); destroyPQExpBuffer(query); destroyPQExpBuffer(q); @@ -14742,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 @@ -16961,6 +16988,7 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo) { DumpOptions *dopt = fout->dopt; PQExpBuffer query; + PQExpBuffer delqry; PQExpBuffer labelq; /* Skip if not to be dumped */ @@ -16968,6 +16996,7 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo) return; query = createPQExpBuffer(); + delqry = createPQExpBuffer(); labelq = createPQExpBuffer(); appendPQExpBufferStr(query, "CREATE EVENT TRIGGER "); @@ -17007,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, @@ -17022,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/po/de.po b/src/bin/pg_dump/po/de.po index 86a502bda7..c73901a2c9 100644 --- a/src/bin/pg_dump/po/de.po +++ b/src/bin/pg_dump/po/de.po @@ -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: 2017-02-06 15:13+0000\n" -"PO-Revision-Date: 2017-02-06 10:30-0500\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" @@ -325,14 +325,14 @@ 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" @@ -435,490 +435,480 @@ msgstr "pgpipe: konnte Verbindung nicht annehmen: Fehlercode %d\n" msgid "archiver" msgstr "Archivierer" -#: pg_backup_archiver.c:234 pg_backup_archiver.c:1535 +#: 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:586 +#: pg_backup_archiver.c:592 #, c-format 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:662 -#, c-format -msgid "setting owner and privileges for %s \"%s.%s\"\n" -msgstr "setze Eigentümer und Privilegien für %s »%s.%s«\n" - -#: pg_backup_archiver.c:665 -#, 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:731 pg_backup_archiver.c:733 +#: 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:742 +#: pg_backup_archiver.c:769 #, c-format msgid "creating %s \"%s.%s\"\n" msgstr "erstelle %s »%s.%s«\n" -#: pg_backup_archiver.c:745 +#: pg_backup_archiver.c:772 #, c-format msgid "creating %s \"%s\"\n" msgstr "erstelle %s »%s«\n" -#: pg_backup_archiver.c:797 +#: 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:825 +#: pg_backup_archiver.c:851 #, c-format msgid "processing %s\n" msgstr "verarbeite %s\n" -#: pg_backup_archiver.c:845 +#: 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:907 +#: pg_backup_archiver.c:933 #, c-format msgid "executing %s %s\n" msgstr "führe %s %s aus\n" -#: pg_backup_archiver.c:946 +#: 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:974 +#: 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:1004 +#: 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:1173 +#: 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:1231 +#: 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:1252 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:1264 +#: 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:1269 pg_dump.c:3070 +#: 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:1327 +#: 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:1368 +#: pg_backup_archiver.c:1422 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "WARNUNG: Zeile ignoriert: %s\n" -#: pg_backup_archiver.c:1375 +#: 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:1396 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: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 +#: 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:1508 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:1614 +#: 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:1620 +#: 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:1713 +#: pg_backup_archiver.c:1767 #, c-format msgid "Error while INITIALIZING:\n" msgstr "Fehler in Phase INITIALIZING:\n" -#: pg_backup_archiver.c:1718 +#: pg_backup_archiver.c:1772 #, c-format msgid "Error while PROCESSING TOC:\n" msgstr "Fehler in Phase PROCESSING TOC:\n" -#: pg_backup_archiver.c:1723 +#: pg_backup_archiver.c:1777 #, c-format msgid "Error while FINALIZING:\n" msgstr "Fehler in Phase FINALIZING:\n" -#: pg_backup_archiver.c:1728 +#: 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:1801 +#: pg_backup_archiver.c:1855 #, c-format msgid "bad dumpId\n" msgstr "ungültige DumpId\n" -#: pg_backup_archiver.c:1822 +#: 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:1914 +#: pg_backup_archiver.c:1968 #, c-format msgid "unexpected data offset flag %d\n" msgstr "unerwartete Datenoffsetmarkierung %d\n" -#: pg_backup_archiver.c:1927 +#: 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:2040 +#: pg_backup_archiver.c:2094 #, c-format msgid "attempting to ascertain archive format\n" msgstr "versuche Archivformat zu ermitteln\n" -#: pg_backup_archiver.c:2066 pg_backup_archiver.c:2076 +#: 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:2084 +#: 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:2092 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:2100 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:2107 +#: 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:2109 +#: 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:2192 +#: 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:2198 +#: 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:2204 +#: 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:2224 +#: 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:2241 +#: 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:2346 +#: pg_backup_archiver.c:2400 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "nicht erkanntes Dateiformat »%d«\n" -#: pg_backup_archiver.c:2502 +#: 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:2618 +#: 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:2652 +#: pg_backup_archiver.c:2706 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "nicht erkannte Kodierung »%s«\n" -#: pg_backup_archiver.c:2657 +#: pg_backup_archiver.c:2711 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "ungültiger ENCODING-Eintrag: %s\n" -#: pg_backup_archiver.c:2675 +#: pg_backup_archiver.c:2729 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "ungültiger STDSTRINGS-Eintrag: %s\n" -#: pg_backup_archiver.c:2690 +#: pg_backup_archiver.c:2744 #, c-format msgid "schema \"%s\" not found\n" msgstr "Schema »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2697 +#: pg_backup_archiver.c:2751 #, c-format msgid "table \"%s\" not found\n" msgstr "Tabelle »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2704 +#: pg_backup_archiver.c:2758 #, c-format msgid "index \"%s\" not found\n" msgstr "Index »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2711 +#: pg_backup_archiver.c:2765 #, c-format msgid "function \"%s\" not found\n" msgstr "Funktion »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2718 +#: pg_backup_archiver.c:2772 #, c-format msgid "trigger \"%s\" not found\n" msgstr "Trigger »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2950 +#: 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:2982 +#: 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:3127 +#: 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:3189 +#: 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:3276 pg_backup_archiver.c:3470 +#: 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:3552 +#: 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:3565 +#: 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:3570 +#: 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:3574 +#: 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:3584 +#: 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:3600 +#: 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:3618 +#: 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:3693 +#: 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:3737 +#: 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:3789 +#: 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:3837 +#: pg_backup_archiver.c:3916 #, c-format msgid "entering main parallel loop\n" msgstr "Eintritt in Hauptparallelschleife\n" -#: pg_backup_archiver.c:3848 +#: 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:3858 +#: 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:3914 +#: pg_backup_archiver.c:4018 #, c-format msgid "finished main parallel loop\n" msgstr "Hauptparallelschleife beendet\n" -#: pg_backup_archiver.c:3923 +#: 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:3942 +#: 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:4091 +#: pg_backup_archiver.c:4233 #, c-format msgid "no item ready\n" msgstr "kein Element bereit\n" -#: pg_backup_archiver.c:4139 +#: 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:4141 +#: 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:4154 +#: 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:4316 +#: 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:4389 +#: 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:4428 +#: 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" @@ -969,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" @@ -1115,7 +1105,7 @@ msgstr "Fehler in PQputCopyEnd: %s" msgid "COPY failed for table \"%s\": %s" msgstr "COPY fehlgeschlagen für Tabelle »%s«: %s" -#: pg_backup_db.c:657 pg_dump.c:1805 +#: 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" @@ -1153,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" @@ -1248,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" @@ -1413,7 +1409,7 @@ msgstr "keine passenden Schemas gefunden\n" msgid "no matching tables were found\n" msgstr "keine passenden Tabellen gefunden\n" -#: pg_dump.c:888 +#: pg_dump.c:897 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -1422,17 +1418,17 @@ msgstr "" "%s gibt eine Datenbank als Textdatei oder in anderen Formaten aus.\n" "\n" -#: pg_dump.c:889 pg_dumpall.c:547 pg_restore.c:443 +#: pg_dump.c:898 pg_dumpall.c:547 pg_restore.c:443 #, c-format msgid "Usage:\n" msgstr "Aufruf:\n" -#: pg_dump.c:890 +#: pg_dump.c:899 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPTION]... [DBNAME]\n" -#: pg_dump.c:892 pg_dumpall.c:550 pg_restore.c:446 +#: pg_dump.c:901 pg_dumpall.c:550 pg_restore.c:446 #, c-format msgid "" "\n" @@ -1441,12 +1437,12 @@ msgstr "" "\n" "Allgemeine Optionen:\n" -#: pg_dump.c:893 +#: 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:894 +#: pg_dump.c:903 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" @@ -1455,37 +1451,37 @@ msgstr "" " -F, --format=c|d|t|p Ausgabeformat (custom, d=Verzeichnis, tar,\n" " plain text)\n" -#: pg_dump.c:896 +#: 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:897 pg_dumpall.c:552 +#: 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:898 pg_dumpall.c:553 +#: 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:899 +#: 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:900 pg_dumpall.c:554 +#: 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:901 pg_dumpall.c:555 +#: 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:903 pg_dumpall.c:556 +#: pg_dump.c:912 pg_dumpall.c:556 #, c-format msgid "" "\n" @@ -1494,49 +1490,49 @@ msgstr "" "\n" "Optionen die den Inhalt der Ausgabe kontrollieren:\n" -#: pg_dump.c:904 pg_dumpall.c:557 +#: 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:905 +#: 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:906 pg_restore.c:457 +#: 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:907 +#: 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:908 +#: 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:909 +#: 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:910 +#: 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:911 pg_dumpall.c:560 +#: 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:912 +#: pg_dump.c:921 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -1545,58 +1541,58 @@ msgstr "" " -O, --no-owner Wiederherstellung der Objekteigentümerschaft im\n" " »plain text«-Format auslassen\n" -#: pg_dump.c:914 pg_dumpall.c:563 +#: 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:915 +#: 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:916 +#: 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:917 +#: 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:918 pg_dumpall.c:566 +#: 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:919 pg_dumpall.c:567 +#: 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:920 pg_dumpall.c:568 +#: 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:921 pg_dumpall.c:569 +#: 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:922 pg_dumpall.c:570 pg_restore.c:473 +#: 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:923 +#: pg_dump.c:932 #, c-format msgid "" " --enable-row-security enable row security (dump only content user has\n" @@ -1605,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:925 +#: 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:926 pg_dumpall.c:571 pg_restore.c:475 +#: 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:927 pg_dumpall.c:572 +#: 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:928 pg_dumpall.c:573 +#: 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:929 +#: 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:930 pg_dumpall.c:574 +#: 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:931 pg_dumpall.c:575 +#: 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:932 pg_dumpall.c:576 +#: 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:933 +#: 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:934 +#: 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:935 +#: 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:936 pg_restore.c:481 +#: pg_dump.c:945 pg_restore.c:481 #, c-format msgid "" " --strict-names require table and/or schema include patterns to\n" @@ -1675,7 +1671,7 @@ msgstr "" " --strict-names Tabellen- oder Schemamuster müssen auf mindestens\n" " je ein Objekt passen\n" -#: pg_dump.c:938 pg_dumpall.c:577 pg_restore.c:483 +#: pg_dump.c:947 pg_dumpall.c:577 pg_restore.c:483 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1687,7 +1683,7 @@ msgstr "" " OWNER Befehle verwenden, um Eigentümerschaft zu\n" " setzen\n" -#: pg_dump.c:942 pg_dumpall.c:581 pg_restore.c:487 +#: pg_dump.c:951 pg_dumpall.c:581 pg_restore.c:487 #, c-format msgid "" "\n" @@ -1696,42 +1692,42 @@ msgstr "" "\n" "Verbindungsoptionen:\n" -#: pg_dump.c:943 +#: pg_dump.c:952 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" msgstr " -d, --dbname=DBNAME auszugebende Datenbank\n" -#: pg_dump.c:944 pg_dumpall.c:583 pg_restore.c:488 +#: 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:945 pg_dumpall.c:585 pg_restore.c:489 +#: 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:946 pg_dumpall.c:586 pg_restore.c:490 +#: 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:947 pg_dumpall.c:587 pg_restore.c:491 +#: 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:948 pg_dumpall.c:588 pg_restore.c:492 +#: 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:949 pg_dumpall.c:589 +#: 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:951 +#: pg_dump.c:960 #, c-format msgid "" "\n" @@ -1744,17 +1740,17 @@ msgstr "" "PGDATABASE verwendet.\n" "\n" -#: pg_dump.c:953 pg_dumpall.c:593 pg_restore.c:499 +#: 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:970 +#: pg_dump.c:979 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "ungültige Clientkodierung »%s« angegeben\n" -#: pg_dump.c:1112 +#: pg_dump.c:1121 #, c-format msgid "" "Synchronized snapshots are not supported on standby servers.\n" @@ -1765,381 +1761,381 @@ msgstr "" "Verwenden Sie --no-synchronized-snapshots, wenn Sie keine synchronisierten\n" "Snapshots benötigen.\n" -#: pg_dump.c:1181 +#: pg_dump.c:1190 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "ungültiges Ausgabeformat »%s« angegeben\n" -#: pg_dump.c:1204 +#: 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:1222 +#: 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:1275 +#: 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:1662 +#: 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:1786 +#: 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:1787 pg_dump.c:1797 +#: pg_dump.c:1796 pg_dump.c:1806 #, c-format msgid "Error message from server: %s" msgstr "Fehlermeldung vom Server: %s" -#: pg_dump.c:1788 pg_dump.c:1798 +#: 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:1796 +#: 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:2445 +#: pg_dump.c:2454 #, c-format msgid "saving database definition\n" msgstr "sichere Datenbankdefinition\n" -#: pg_dump.c:2779 +#: pg_dump.c:2788 #, c-format msgid "saving encoding = %s\n" msgstr "sichere Kodierung = %s\n" -#: pg_dump.c:2806 +#: pg_dump.c:2815 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "sichere standard_conforming_strings = %s\n" -#: pg_dump.c:2846 +#: pg_dump.c:2855 #, c-format msgid "reading large objects\n" msgstr "lese Large Objects\n" -#: pg_dump.c:3033 +#: pg_dump.c:3056 #, c-format msgid "saving large objects\n" msgstr "sichere Large Objects\n" -#: pg_dump.c:3080 +#: 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:3132 +#: 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:3163 +#: 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:3296 +#: pg_dump.c:3319 #, c-format msgid "unexpected policy command type: \"%s\"\n" msgstr "unerwarteter Policy-Befehlstyp: »%s«\n" -#: pg_dump.c:3515 +#: 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:3683 +#: 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:3726 +#: 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:4141 +#: 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:4255 +#: 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:4600 +#: 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:4691 +#: 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:4892 +#: 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:5189 +#: 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:6051 +#: 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:6093 pg_dump.c:16593 +#: 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:6220 +#: 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:6588 +#: 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:6834 +#: 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 mit OID %u von pg_rewrite-Eintrag mit OID %u nicht gefunden\n" -#: pg_dump.c:6928 +#: 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:7093 +#: 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:7748 +#: 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:7927 +#: 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:7961 +#: 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:8014 +#: 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:8086 +#: 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:8182 +#: 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:8186 +#: 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:9764 +#: 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:11306 +#: 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:11684 +#: 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:11700 +#: 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:11714 +#: 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:11725 +#: 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:11796 +#: 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:11840 pg_dump.c:13889 +#: 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:11948 pg_dump.c:12058 pg_dump.c:12065 +#: 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:11993 +#: 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:11996 +#: 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:12086 +#: 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:12103 +#: 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:12124 +#: 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:12515 +#: 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:12579 +#: 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:13780 +#: 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:14652 +#: 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:14670 +#: 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:14741 +#: 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:14749 +#: 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:15233 +#: 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:15236 +#: 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:15243 +#: 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:16002 +#: 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:16131 +#: pg_dump.c:16203 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "fehlender Index für Constraint »%s«\n" -#: pg_dump.c:16334 +#: pg_dump.c:16406 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "unbekannter Constraint-Typ: %c\n" -#: pg_dump.c:16488 pg_dump.c:16661 +#: 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:16499 +#: 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:16759 +#: pg_dump.c:16831 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "unerwarteter tgtype-Wert: %d\n" -#: pg_dump.c:16841 +#: 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:17038 +#: 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:17427 +#: pg_dump.c:17509 #, c-format msgid "reading dependency data\n" msgstr "lese Abhängigkeitsdaten\n" -#: pg_dump.c:17984 +#: pg_dump.c:18066 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "WARNUNG: konnte reloptions-Array nicht interpretieren\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 e647d0035e..faab6e689c 100644 --- a/src/bin/pg_dump/po/fr.po +++ b/src/bin/pg_dump/po/fr.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-11-26 18:44+0000\n" -"PO-Revision-Date: 2016-11-26 22:30+0100\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" @@ -18,7 +18,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.8.8\n" +"X-Generator: Poedit 2.0.2\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format @@ -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:1535 +#: 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" @@ -588,69 +588,69 @@ msgstr "" "erreur interne -- WriteData ne peut pas être appelé en dehors du contexte\n" "de la routine DataDumper\n" -#: pg_backup_archiver.c:1173 +#: 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 " "choisi\n" -#: pg_backup_archiver.c:1231 +#: 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" -#: pg_backup_archiver.c:1252 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" -#: pg_backup_archiver.c:1264 +#: 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" -#: pg_backup_archiver.c:1269 pg_dump.c:3060 +#: 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" -#: pg_backup_archiver.c:1327 +#: 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" -#: pg_backup_archiver.c:1368 +#: pg_backup_archiver.c:1396 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "ATTENTION : ligne ignorée : %s\n" -#: pg_backup_archiver.c:1375 +#: 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" -#: pg_backup_archiver.c:1396 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:1505 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" -#: pg_backup_archiver.c:1508 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:1614 +#: 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" @@ -659,63 +659,63 @@ msgstr[0] "" msgstr[1] "" "a écrit %lu octets de données d'un « Large Object » (résultat = %lu)\n" -#: pg_backup_archiver.c:1620 +#: 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" -#: pg_backup_archiver.c:1713 +#: pg_backup_archiver.c:1741 #, c-format msgid "Error while INITIALIZING:\n" msgstr "Erreur pendant l'initialisation (« INITIALIZING ») :\n" -#: pg_backup_archiver.c:1718 +#: pg_backup_archiver.c:1746 #, c-format msgid "Error while PROCESSING TOC:\n" msgstr "Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :\n" -#: pg_backup_archiver.c:1723 +#: pg_backup_archiver.c:1751 #, c-format msgid "Error while FINALIZING:\n" msgstr "Erreur pendant la finalisation (« FINALIZING ») :\n" -#: pg_backup_archiver.c:1728 +#: 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" -#: pg_backup_archiver.c:1801 +#: pg_backup_archiver.c:1829 #, c-format msgid "bad dumpId\n" msgstr "mauvais dumpId\n" -#: pg_backup_archiver.c:1822 +#: 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" -#: pg_backup_archiver.c:1914 +#: 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" -#: pg_backup_archiver.c:1927 +#: 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" -#: pg_backup_archiver.c:2040 +#: 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:2066 pg_backup_archiver.c:2076 +#: 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" -#: pg_backup_archiver.c:2084 +#: pg_backup_archiver.c:2112 #, c-format msgid "" "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does " @@ -724,154 +724,154 @@ msgstr "" "le répertoire « %s » ne semble pas être une archive valide (« toc.dat » " "n'existe pas)\n" -#: pg_backup_archiver.c:2092 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" -#: pg_backup_archiver.c:2100 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" -#: pg_backup_archiver.c:2107 +#: 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" -#: pg_backup_archiver.c:2109 +#: 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" -#: pg_backup_archiver.c:2192 +#: 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 " "d'utiliser psql.\n" -#: pg_backup_archiver.c:2198 +#: 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" -#: pg_backup_archiver.c:2204 +#: 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" -#: pg_backup_archiver.c:2224 +#: 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" -#: pg_backup_archiver.c:2241 +#: 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:2346 +#: pg_backup_archiver.c:2374 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "format de fichier « %d » non reconnu\n" -#: pg_backup_archiver.c:2502 +#: 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" -#: pg_backup_archiver.c:2618 +#: 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" -#: pg_backup_archiver.c:2652 +#: pg_backup_archiver.c:2680 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "encodage « %s » non reconnu\n" -#: pg_backup_archiver.c:2657 +#: pg_backup_archiver.c:2685 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "élément ENCODING invalide : %s\n" -#: pg_backup_archiver.c:2675 +#: pg_backup_archiver.c:2703 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "élément STDSTRINGS invalide : %s\n" -#: pg_backup_archiver.c:2690 +#: pg_backup_archiver.c:2718 #, c-format msgid "schema \"%s\" not found\n" msgstr "schéma « %s » non trouvé\n" -#: pg_backup_archiver.c:2697 +#: pg_backup_archiver.c:2725 #, c-format msgid "table \"%s\" not found\n" msgstr "table « %s » non trouvée\n" -#: pg_backup_archiver.c:2704 +#: pg_backup_archiver.c:2732 #, c-format msgid "index \"%s\" not found\n" msgstr "index « %s » non trouvé\n" -#: pg_backup_archiver.c:2711 +#: pg_backup_archiver.c:2739 #, c-format msgid "function \"%s\" not found\n" msgstr "fonction « %s » non trouvée\n" -#: pg_backup_archiver.c:2718 +#: pg_backup_archiver.c:2746 #, c-format msgid "trigger \"%s\" not found\n" msgstr "trigger « %s » non trouvé\n" -#: pg_backup_archiver.c:2950 +#: 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" -#: pg_backup_archiver.c:2982 +#: 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:3127 +#: 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" -#: pg_backup_archiver.c:3189 +#: 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" -#: pg_backup_archiver.c:3276 pg_backup_archiver.c:3470 +#: 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" +"« %s »\n" -#: pg_backup_archiver.c:3552 +#: 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" -#: pg_backup_archiver.c:3565 +#: 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" -#: pg_backup_archiver.c:3570 +#: 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" -#: pg_backup_archiver.c:3574 +#: pg_backup_archiver.c:3615 #, c-format msgid "" "WARNING: archive was made on a machine with larger integers, some " @@ -880,12 +880,12 @@ msgstr "" "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:3584 +#: 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" -#: pg_backup_archiver.c:3600 +#: pg_backup_archiver.c:3641 #, c-format msgid "" "WARNING: archive is compressed, but this installation does not support " @@ -894,87 +894,87 @@ msgstr "" "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:3618 +#: 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" -#: pg_backup_archiver.c:3693 +#: pg_backup_archiver.c:3734 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "entrée dans restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3737 +#: pg_backup_archiver.c:3778 #, c-format msgid "processing item %d %s %s\n" msgstr "traitement de l'élément %d %s %s\n" -#: pg_backup_archiver.c:3789 +#: pg_backup_archiver.c:3830 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "entrée dans restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3837 +#: pg_backup_archiver.c:3878 #, c-format msgid "entering main parallel loop\n" msgstr "entrée dans la boucle parallèle principale\n" -#: pg_backup_archiver.c:3848 +#: pg_backup_archiver.c:3889 #, c-format msgid "skipping item %d %s %s\n" msgstr "omission de l'élément %d %s %s\n" -#: pg_backup_archiver.c:3858 +#: pg_backup_archiver.c:3899 #, c-format msgid "launching item %d %s %s\n" msgstr "élément de lancement %d %s %s\n" -#: pg_backup_archiver.c:3914 +#: pg_backup_archiver.c:3955 #, c-format msgid "finished main parallel loop\n" msgstr "fin de la boucle parallèle principale\n" -#: pg_backup_archiver.c:3923 +#: pg_backup_archiver.c:3964 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "entrée dans restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3942 +#: 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" -#: pg_backup_archiver.c:4091 +#: pg_backup_archiver.c:4132 #, c-format msgid "no item ready\n" msgstr "aucun élément prêt\n" -#: pg_backup_archiver.c:4139 +#: 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:4141 +#: pg_backup_archiver.c:4182 #, c-format msgid "finished item %d %s %s\n" msgstr "élément terminé %d %s %s\n" -#: pg_backup_archiver.c:4154 +#: 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" -#: pg_backup_archiver.c:4316 +#: 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" -#: pg_backup_archiver.c:4389 +#: pg_backup_archiver.c:4430 #, c-format msgid "reducing dependencies for %d\n" msgstr "réduction des dépendances pour %d\n" -#: pg_backup_archiver.c:4428 +#: pg_backup_archiver.c:4469 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "" @@ -1108,12 +1108,12 @@ 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" @@ -1124,7 +1124,7 @@ msgid "connecting to database \"%s\" as user \"%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 : " @@ -1204,7 +1204,7 @@ msgstr "erreur renvoyée par PQputCopyEnd : %s" msgid "COPY failed for 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 "" @@ -1426,7 +1426,7 @@ msgstr "" msgid "%s: unrecognized section name: \"%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 @@ -1438,32 +1438,32 @@ msgstr "Essayer « %s --help » pour plus d'informations.\n" 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" -#: 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" -#: 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" -#: 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" -#: pg_dump.c:573 +#: pg_dump.c:576 #, c-format msgid "" "options --inserts/--column-inserts and -o/--oids cannot be used together\n" @@ -1471,17 +1471,17 @@ msgstr "" "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" -#: pg_dump.c:601 +#: pg_dump.c:604 #, c-format msgid "" "WARNING: requested compression not available in this installation -- " @@ -1490,18 +1490,18 @@ msgstr "" "ATTENTION : la compression requise n'est pas disponible avec cette\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" -#: pg_dump.c:677 +#: pg_dump.c:680 #, c-format msgid "" "Synchronized snapshots are not supported by this server version.\n" @@ -1514,7 +1514,7 @@ msgstr "" "besoin\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 "" @@ -1522,22 +1522,22 @@ msgstr "" "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" -#: 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" -#: pg_dump.c:878 +#: pg_dump.c:897 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -1547,17 +1547,17 @@ msgstr "" "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" @@ -1566,13 +1566,13 @@ msgstr "" "\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" -#: pg_dump.c:884 +#: pg_dump.c:903 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" @@ -1581,24 +1581,24 @@ msgstr "" " -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" " 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" @@ -1606,7 +1606,7 @@ msgstr "" " -Z, --compress=0-9 niveau de compression pour les formats\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" @@ -1615,12 +1615,12 @@ msgstr "" "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" @@ -1629,21 +1629,21 @@ msgstr "" "\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" -#: 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" " 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 " @@ -1652,7 +1652,7 @@ msgstr "" " -c, --clean nettoie/supprime les objets de la base de\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" @@ -1660,30 +1660,30 @@ msgstr "" " -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" " 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" -#: 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" -#: 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" @@ -1693,14 +1693,14 @@ msgstr "" " 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" -#: pg_dump.c:905 +#: pg_dump.c:924 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in plain-text " @@ -1709,31 +1709,31 @@ msgstr "" " -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" -#: 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" -#: 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" " 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 " @@ -1742,7 +1742,7 @@ msgstr "" " --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 " @@ -1752,7 +1752,7 @@ msgstr "" " dollar dans le but de respecter le standard\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" @@ -1761,7 +1761,7 @@ msgstr "" "restauration\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 " @@ -1773,20 +1773,20 @@ msgstr "" "\\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" -#: 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 " @@ -1796,7 +1796,7 @@ msgstr "" "instructions\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" @@ -1805,7 +1805,7 @@ msgstr "" "de\n" " sécurité\n" -#: pg_dump.c:919 +#: pg_dump.c:938 #, c-format msgid "" " --no-synchronized-snapshots do not use synchronized snapshots in " @@ -1814,14 +1814,14 @@ msgstr "" " --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 "" @@ -1829,7 +1829,7 @@ msgstr "" "non\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 " @@ -1838,7 +1838,7 @@ msgstr "" " --quote-all-identifiers met entre guillemets tous les identifiants\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-" @@ -1848,7 +1848,7 @@ msgstr "" "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 " @@ -1857,13 +1857,13 @@ msgstr "" " --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" -#: 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 " @@ -1875,7 +1875,7 @@ msgstr "" " 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" @@ -1889,7 +1889,7 @@ msgstr "" " au lieu des commandes ALTER OWNER pour\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" @@ -1898,36 +1898,36 @@ 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" -#: 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" -#: 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" -#: 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 " @@ -1936,12 +1936,12 @@ msgstr "" " -W, --password force la demande du mot de passe (par\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" -#: pg_dump.c:941 +#: pg_dump.c:960 #, c-format msgid "" "\n" @@ -1954,17 +1954,17 @@ msgstr "" "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" -#: pg_dump.c:960 +#: pg_dump.c:979 #, c-format msgid "invalid client encoding \"%s\" specified\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" @@ -1977,12 +1977,12 @@ msgstr "" "besoin\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" -#: 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 "" @@ -1990,157 +1990,170 @@ msgstr "" "options\n" "de sélection du schéma\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 "aucun schéma correspondant n'a été trouvé avec le motif « %s »\n" + +#: 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" -#: 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" -#: 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" "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" -#: 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" "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" -#: 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" -#: pg_dump.c:3023 +#: pg_dump.c:3056 #, c-format msgid "saving large objects\n" msgstr "sauvegarde des « Large Objects »\n" -#: pg_dump.c:3070 +#: pg_dump.c:3103 #, c-format msgid "error reading large object %u: %s" msgstr "erreur lors de la lecture du « Large Object » %u : %s" -#: pg_dump.c:3122 +#: 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" -#: pg_dump.c:3153 +#: pg_dump.c:3186 #, c-format msgid "reading policies for table \"%s.%s\"\n" msgstr "lecture des politiques pour la table « %s.%s »\n" -#: pg_dump.c:3286 +#: pg_dump.c:3319 #, c-format msgid "unexpected policy command type: \"%s\"\n" msgstr "type de commande inattendu pour la politique : « %s »\n" -#: pg_dump.c:3505 +#: 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:3673 +#: 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" -#: pg_dump.c:3716 +#: 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" -#: pg_dump.c:4131 +#: 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" -#: pg_dump.c:4245 +#: 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" -#: pg_dump.c:4590 +#: 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" "invalide\n" -#: pg_dump.c:4681 +#: 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" "invalide\n" -#: pg_dump.c:4882 +#: 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" "invalide\n" -#: pg_dump.c:5154 +#: 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" -#: pg_dump.c:6016 +#: 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" -#: pg_dump.c:6182 +#: 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" -#: pg_dump.c:6550 +#: 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" -#: pg_dump.c:6796 +#: pg_dump.c:6882 #, c-format msgid "" "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " @@ -2149,12 +2162,12 @@ msgstr "" "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:6890 +#: pg_dump.c:6976 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "lecture des triggers pour la table « %s.%s »\n" -#: pg_dump.c:7055 +#: pg_dump.c:7141 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " @@ -2163,32 +2176,32 @@ 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" -#: pg_dump.c:7710 +#: 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" -#: pg_dump.c:7889 +#: 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" -#: pg_dump.c:7923 +#: 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" -#: pg_dump.c:7976 +#: 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" -#: pg_dump.c:8048 +#: 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" -#: pg_dump.c:8144 +#: 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" @@ -2199,66 +2212,71 @@ msgstr[1] "" "%d contraintes de vérification attendues pour la table « %s » mais %d\n" "trouvées\n" -#: pg_dump.c:8148 +#: pg_dump.c:8234 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(Les catalogues système sont peut-être corrompus.)\n" -#: pg_dump.c:9680 +#: 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 " "invalide\n" -#: pg_dump.c:11222 +#: pg_dump.c:11355 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "ATTENTION : valeur erronée dans le tableau proargmodes\n" -#: pg_dump.c:11600 +#: 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:11616 +#: 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:11630 +#: 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:11641 +#: 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:11712 +#: pg_dump.c:11845 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "valeur provolatile non reconnue pour la fonction « %s »\n" -#: pg_dump.c:11756 pg_dump.c:13802 +#: 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" -#: pg_dump.c:11908 +#: 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." "castmethod\n" -#: pg_dump.c:11911 +#: 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" -#: pg_dump.c:11999 +#: pg_dump.c:12135 #, c-format msgid "" "WARNING: bogus transform definition, at least one of trffromsql and " @@ -2267,27 +2285,27 @@ msgstr "" "ATTENTION : définition de transformation invalide, au moins un de " "trffromsql et trftosql ne doit pas valoir 0\n" -#: pg_dump.c:12016 +#: 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" -#: pg_dump.c:12037 +#: 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" -#: pg_dump.c:12428 +#: 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" -#: pg_dump.c:12492 +#: 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" -#: pg_dump.c:13693 +#: pg_dump.c:13841 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " @@ -2296,17 +2314,17 @@ 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" -#: pg_dump.c:14565 +#: 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" -#: pg_dump.c:14580 +#: 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" -#: pg_dump.c:14651 +#: pg_dump.c:14802 #, c-format msgid "" "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) " @@ -2315,7 +2333,7 @@ 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" -#: pg_dump.c:14659 +#: pg_dump.c:14810 #, c-format msgid "" "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s" @@ -2324,14 +2342,14 @@ msgstr "" "n'a pas pu analyser la liste GRANT ACL (%s) ou REVOKE ACL (%s) de l'objet « " "%s » (%s)\n" -#: pg_dump.c:15143 +#: 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" -#: pg_dump.c:15146 +#: pg_dump.c:15298 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one " @@ -2340,27 +2358,27 @@ msgstr "" "la requête permettant d'obtenir la définition de la vue « %s » a renvoyé\n" " plusieurs définitions\n" -#: pg_dump.c:15153 +#: 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" -#: pg_dump.c:15912 +#: 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" -#: pg_dump.c:16041 +#: pg_dump.c:16193 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "index manquant pour la contrainte « %s »\n" -#: pg_dump.c:16244 +#: pg_dump.c:16396 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "type de contrainte inconnu : %c\n" -#: pg_dump.c:16398 pg_dump.c:16567 +#: 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 "" @@ -2374,7 +2392,7 @@ msgstr[1] "" "renvoyé\n" "%d lignes (une seule attendue)\n" -#: pg_dump.c:16409 +#: pg_dump.c:16561 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "" @@ -2382,18 +2400,18 @@ msgstr "" "renvoyé\n" "le nom « %s »\n" -#: pg_dump.c:16665 +#: pg_dump.c:16821 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "valeur tgtype inattendue : %d\n" -#: pg_dump.c:16747 +#: 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" -#: pg_dump.c:16944 +#: pg_dump.c:17110 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " @@ -2402,12 +2420,12 @@ 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" -#: pg_dump.c:17333 +#: pg_dump.c:17499 #, c-format msgid "reading dependency data\n" msgstr "lecture des données de dépendance\n" -#: pg_dump.c:17890 +#: 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" @@ -2517,7 +2535,7 @@ msgstr "" "%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" @@ -2532,7 +2550,7 @@ msgstr "" "peuvent\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" @@ -2571,7 +2589,7 @@ 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" @@ -2580,7 +2598,7 @@ msgstr "" "avant de\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" @@ -2589,14 +2607,14 @@ msgstr "" "pas\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" " objets\n" -#: pg_dumpall.c:561 +#: pg_dumpall.c:562 #, c-format msgid "" " -r, --roles-only dump only roles, no databases or " @@ -2606,7 +2624,7 @@ msgstr "" "bases\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" @@ -2615,7 +2633,7 @@ msgstr "" "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 " @@ -2625,19 +2643,19 @@ msgstr "" "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 " "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" -#: pg_dumpall.c:590 +#: pg_dumpall.c:591 #, c-format msgid "" "\n" @@ -2651,70 +2669,70 @@ msgstr "" "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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: pg_dumpall.c:1832 +#: pg_dumpall.c:1833 #, c-format msgid "%s: running \"%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" -#: 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" -#: 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" -#: 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" -#: 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" @@ -2742,14 +2760,24 @@ msgstr "" "%s : les options « -c/--clean » et « -a/--data-only » ne peuvent pas être\n" "utilisées conjointement\n" -#: pg_restore.c:331 +#: 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: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" -#: pg_restore.c:372 +#: pg_restore.c:388 #, c-format msgid "" "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" @@ -2757,17 +2785,12 @@ 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" - -#: 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" -#: pg_restore.c:436 +#: pg_restore.c:442 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -2778,24 +2801,24 @@ msgstr "" "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" " 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 "" @@ -2803,29 +2826,29 @@ msgstr "" "ê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 " "(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" @@ -2834,30 +2857,30 @@ msgstr "" "\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" " 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" -#: 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" -#: 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" -#: pg_restore.c:455 +#: pg_restore.c:461 #, c-format msgid "" " -j, --jobs=NUM use this many parallel jobs to restore\n" @@ -2865,7 +2888,7 @@ msgstr "" " -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" @@ -2875,25 +2898,25 @@ msgstr "" " 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" -#: 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" -#: 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" -#: pg_restore.c:462 +#: pg_restore.c:468 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use for disabling " @@ -2902,7 +2925,7 @@ msgstr "" " -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" @@ -2910,12 +2933,12 @@ msgstr "" " -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" -#: pg_restore.c:465 +#: pg_restore.c:471 #, c-format msgid "" " -x, --no-privileges skip restoration of access privileges (grant/" @@ -2925,17 +2948,17 @@ 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" -#: 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 " @@ -2945,20 +2968,20 @@ msgstr "" " --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" -#: 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 " @@ -2968,13 +2991,13 @@ msgstr "" "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" -#: pg_restore.c:489 +#: pg_restore.c:495 #, c-format msgid "" "\n" @@ -2987,7 +3010,7 @@ msgstr "" "indiquées\n" "plusieurs fois pour sélectionner plusieurs objets.\n" -#: pg_restore.c:492 +#: pg_restore.c:498 #, c-format msgid "" "\n" 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/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 edb9c60467..a10bd257b4 100644 --- a/src/bin/pg_dump/po/ru.po +++ b/src/bin/pg_dump/po/ru.po @@ -5,14 +5,14 @@ # Oleg Bartunov , 2004. # Sergey Burladyan , 2012. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2016, 2017. +# 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: 2017-02-01 23:14+0000\n" -"PO-Revision-Date: 2017-02-02 15:21+0300\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" @@ -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,14 +332,14 @@ 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" @@ -444,36 +446,36 @@ msgstr "pgpipe: не удалоÑÑŒ принÑть Ñоединение (код msgid "archiver" msgstr "архиватор" -#: pg_backup_archiver.c:234 pg_backup_archiver.c:1535 +#: 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,90 +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:586 +#: pg_backup_archiver.c:592 #, c-format msgid "WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ определить, куда добавить IF EXISTS в оператор " "\"%s\"\n" -#: pg_backup_archiver.c:662 -#, c-format -msgid "setting owner and privileges for %s \"%s.%s\"\n" -msgstr "уÑтановка владельца и прав: %s \"%s.%s\"\n" - -#: 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 +#: 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:742 +#: pg_backup_archiver.c:769 #, c-format msgid "creating %s \"%s.%s\"\n" msgstr "ÑоздаётÑÑ %s \"%s.%s\"\n" -#: pg_backup_archiver.c:745 +#: pg_backup_archiver.c:772 #, c-format msgid "creating %s \"%s\"\n" msgstr "ÑоздаётÑÑ %s \"%s\"\n" -#: pg_backup_archiver.c:797 +#: pg_backup_archiver.c:823 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "подключение к новой базе данных \"%s\"\n" -#: pg_backup_archiver.c:825 +#: pg_backup_archiver.c:851 #, c-format msgid "processing %s\n" msgstr "обрабатываетÑÑ %s\n" -#: pg_backup_archiver.c:845 +#: pg_backup_archiver.c:871 #, c-format msgid "processing data for table \"%s.%s\"\n" msgstr "обрабатываютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ таблицы \"%s.%s\"\n" -#: pg_backup_archiver.c:907 +#: pg_backup_archiver.c:933 #, c-format msgid "executing %s %s\n" msgstr "выполнÑетÑÑ %s %s\n" -#: pg_backup_archiver.c:946 +#: pg_backup_archiver.c:972 #, c-format msgid "disabling triggers for %s\n" msgstr "отключаютÑÑ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ñ‹ таблицы %s\n" -#: pg_backup_archiver.c:974 +#: pg_backup_archiver.c:1000 #, c-format msgid "enabling triggers for %s\n" msgstr "включаютÑÑ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ñ‹ таблицы %s\n" -#: pg_backup_archiver.c:1004 +#: pg_backup_archiver.c:1030 #, c-format msgid "" "internal error -- WriteData cannot be called outside the context of a " @@ -582,12 +574,12 @@ msgstr "" "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° -- WriteData Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ вне контекÑта процедуры " "DataDumper\n" -#: pg_backup_archiver.c:1173 +#: pg_backup_archiver.c:1227 #, c-format msgid "large-object output not supported in chosen format\n" msgstr "выбранный формат не поддерживает выгрузку больших объектов\n" -#: pg_backup_archiver.c:1231 +#: pg_backup_archiver.c:1285 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" @@ -595,55 +587,55 @@ msgstr[0] "воÑÑтановлен %d большой объект\n" msgstr[1] "воÑÑтановлено %d больших объекта\n" msgstr[2] "воÑÑтановлено %d больших объектов\n" -#: pg_backup_archiver.c:1252 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:1264 +#: pg_backup_archiver.c:1318 #, c-format msgid "could not create large object %u: %s" msgstr "не удалоÑÑŒ Ñоздать большой объект %u: %s" -#: pg_backup_archiver.c:1269 pg_dump.c:3070 +#: 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:1327 +#: pg_backup_archiver.c:1381 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "не удалоÑÑŒ открыть файл Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\": %s\n" -#: pg_backup_archiver.c:1368 +#: pg_backup_archiver.c:1422 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: Ñтрока проигнорирована: %s\n" -#: pg_backup_archiver.c:1375 +#: pg_backup_archiver.c:1429 #, c-format msgid "could not find entry for ID %d\n" msgstr "не найдена запиÑÑŒ Ð´Ð»Ñ ID %d\n" -#: pg_backup_archiver.c:1396 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: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 +#: 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:1508 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:1614 +#: 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" @@ -651,212 +643,212 @@ msgstr[0] "запиÑан %lu байт данных большого объек msgstr[1] "запиÑано %lu байта данных большого объекта (результат = %lu)\n" msgstr[2] "запиÑано %lu байт данных большого объекта (результат = %lu)\n" -#: pg_backup_archiver.c:1620 +#: 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:1713 +#: pg_backup_archiver.c:1767 #, c-format msgid "Error while INITIALIZING:\n" msgstr "Ошибка при инициализации:\n" -#: pg_backup_archiver.c:1718 +#: pg_backup_archiver.c:1772 #, c-format msgid "Error while PROCESSING TOC:\n" msgstr "Ошибка при обработке оглавлениÑ:\n" -#: pg_backup_archiver.c:1723 +#: pg_backup_archiver.c:1777 #, c-format msgid "Error while FINALIZING:\n" msgstr "Ошибка при завершении:\n" -#: pg_backup_archiver.c:1728 +#: 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:1801 +#: pg_backup_archiver.c:1855 #, c-format msgid "bad dumpId\n" msgstr "неверный dumpId\n" -#: pg_backup_archiver.c:1822 +#: 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:1914 +#: pg_backup_archiver.c:1968 #, c-format msgid "unexpected data offset flag %d\n" msgstr "неожиданный флаг ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…: %d\n" -#: pg_backup_archiver.c:1927 +#: pg_backup_archiver.c:1981 #, c-format msgid "file offset in dump file is too large\n" msgstr "Ñлишком большое Ñмещение в файле вывода\n" -#: pg_backup_archiver.c:2040 +#: pg_backup_archiver.c:2094 #, c-format msgid "attempting to ascertain archive format\n" msgstr "попытка выÑÑнить формат архива\n" -#: pg_backup_archiver.c:2066 pg_backup_archiver.c:2076 +#: 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:2084 +#: 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:2092 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:2100 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:2107 +#: pg_backup_archiver.c:2161 #, c-format msgid "could not read input file: %s\n" msgstr "не удалоÑÑŒ прочитать входной файл: %s\n" -#: pg_backup_archiver.c:2109 +#: 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:2192 +#: 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:2198 +#: 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:2204 +#: 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:2224 +#: pg_backup_archiver.c:2278 #, c-format msgid "could not close input file: %s\n" msgstr "не удалоÑÑŒ закрыть входной файл: %s\n" -#: pg_backup_archiver.c:2241 +#: pg_backup_archiver.c:2295 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "выделение Ñтруктуры AH Ð´Ð»Ñ %s, формат %d\n" -#: pg_backup_archiver.c:2346 +#: pg_backup_archiver.c:2400 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "неопознанный формат файла: \"%d\"\n" -#: pg_backup_archiver.c:2502 +#: 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:2618 +#: 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:2652 +#: pg_backup_archiver.c:2706 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° \"%s\"\n" -#: pg_backup_archiver.c:2657 +#: pg_backup_archiver.c:2711 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "неверный Ñлемент ENCODING: %s\n" -#: pg_backup_archiver.c:2675 +#: pg_backup_archiver.c:2729 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "неверный Ñлемент STDSTRINGS: %s\n" -#: pg_backup_archiver.c:2690 +#: pg_backup_archiver.c:2744 #, c-format msgid "schema \"%s\" not found\n" msgstr "Ñхема \"%s\" не найдена\n" -#: pg_backup_archiver.c:2697 +#: pg_backup_archiver.c:2751 #, c-format msgid "table \"%s\" not found\n" msgstr "таблица \"%s\" не найдена\n" -#: pg_backup_archiver.c:2704 +#: pg_backup_archiver.c:2758 #, c-format msgid "index \"%s\" not found\n" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не найден\n" -#: pg_backup_archiver.c:2711 +#: pg_backup_archiver.c:2765 #, c-format msgid "function \"%s\" not found\n" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" не найдена\n" -#: pg_backup_archiver.c:2718 +#: pg_backup_archiver.c:2772 #, c-format msgid "trigger \"%s\" not found\n" msgstr "триггер \"%s\" не найден\n" -#: pg_backup_archiver.c:2950 +#: pg_backup_archiver.c:3036 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "не удалоÑÑŒ переключить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑеÑÑии на \"%s\": %s" -#: pg_backup_archiver.c:2982 +#: pg_backup_archiver.c:3068 #, c-format msgid "could not set default_with_oids: %s" msgstr "не удалоÑÑŒ уÑтановить параметр default_with_oids: %s" -#: pg_backup_archiver.c:3127 +#: 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:3189 +#: 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:3276 pg_backup_archiver.c:3470 +#: 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:3552 +#: pg_backup_archiver.c:3639 #, c-format msgid "did not find magic string in file header\n" msgstr "в файле заголовка не найдена магичеÑÐºÐ°Ñ Ñтрока\n" -#: pg_backup_archiver.c:3565 +#: pg_backup_archiver.c:3652 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ (%d.%d) в заголовке файла\n" -#: pg_backup_archiver.c:3570 +#: pg_backup_archiver.c:3657 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "неÑоответÑтвие размера integer (%lu)\n" -#: pg_backup_archiver.c:3574 +#: pg_backup_archiver.c:3661 #, c-format msgid "" "WARNING: archive was made on a machine with larger integers, some operations " @@ -865,12 +857,12 @@ msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: архив был Ñделан на компьютере большей разрÑдноÑти -- " "возможен Ñбой некоторых операций\n" -#: pg_backup_archiver.c:3584 +#: 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:3600 +#: pg_backup_archiver.c:3687 #, c-format msgid "" "WARNING: archive is compressed, but this installation does not support " @@ -879,87 +871,87 @@ msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: архив Ñжат, но уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð½Ðµ поддерживает Ñжатие " "-- данные недоÑтупны\n" -#: pg_backup_archiver.c:3618 +#: pg_backup_archiver.c:3705 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð² заголовке\n" -#: pg_backup_archiver.c:3693 +#: pg_backup_archiver.c:3778 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "вход в restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3737 +#: pg_backup_archiver.c:3841 #, c-format msgid "processing item %d %s %s\n" msgstr "обработка объекта %d %s %s\n" -#: pg_backup_archiver.c:3789 +#: pg_backup_archiver.c:3895 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "вход в restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3837 +#: pg_backup_archiver.c:3916 #, c-format msgid "entering main parallel loop\n" msgstr "вход в оÑновной параллельный цикл\n" -#: pg_backup_archiver.c:3848 +#: pg_backup_archiver.c:3927 #, c-format msgid "skipping item %d %s %s\n" msgstr "объект %d %s %s пропуÑкаетÑÑ\n" -#: pg_backup_archiver.c:3858 +#: pg_backup_archiver.c:3937 #, c-format msgid "launching item %d %s %s\n" msgstr "объект %d %s %s запуÑкаетÑÑ\n" -#: pg_backup_archiver.c:3914 +#: pg_backup_archiver.c:4018 #, c-format msgid "finished main parallel loop\n" msgstr "оÑновной параллельный цикл закончен\n" -#: pg_backup_archiver.c:3923 +#: pg_backup_archiver.c:4036 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "вход в restore_toc_entries_postfork\n" -#: pg_backup_archiver.c:3942 +#: pg_backup_archiver.c:4056 #, c-format msgid "processing missed item %d %s %s\n" msgstr "обработка пропущенного объекта %d %s %s\n" -#: pg_backup_archiver.c:4091 +#: pg_backup_archiver.c:4233 #, c-format msgid "no item ready\n" msgstr "Ñлемент не готов\n" -#: pg_backup_archiver.c:4139 +#: pg_backup_archiver.c:4281 #, c-format msgid "could not find slot of finished worker\n" msgstr "не удалоÑÑŒ найти Ñлот законченного рабочего объекта\n" -#: pg_backup_archiver.c:4141 +#: pg_backup_archiver.c:4283 #, c-format msgid "finished item %d %s %s\n" msgstr "закончен объект %d %s %s\n" -#: pg_backup_archiver.c:4154 +#: pg_backup_archiver.c:4296 #, c-format msgid "worker process failed: exit code %d\n" msgstr "рабочий процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ñ ÐºÐ¾Ð´Ð¾Ð¼ возврата %d\n" -#: pg_backup_archiver.c:4316 +#: pg_backup_archiver.c:4458 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "переключение завиÑимоÑти %d -> %d на %d\n" -#: pg_backup_archiver.c:4389 +#: pg_backup_archiver.c:4531 #, c-format msgid "reducing dependencies for %d\n" msgstr "уменьшение завиÑимоÑтей Ð´Ð»Ñ %d\n" -#: pg_backup_archiver.c:4428 +#: pg_backup_archiver.c:4579 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "Ñоздать таблицу \"%s\" не удалоÑÑŒ, её данные не будут воÑÑтановлены\n" @@ -1021,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" @@ -1171,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:1805 +#: pg_backup_db.c:657 pg_dump.c:1814 #, c-format msgid "WARNING: unexpected extra results during COPY of table \"%s\"\n" msgstr "" @@ -1211,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" @@ -1307,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\" " @@ -1362,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" @@ -1371,12 +1369,12 @@ msgstr[1] "найден неполный tar-заголовок (размер %l msgstr[2] "найден неполный tar-заголовок (размер %lu байтов)\n" # skip-rule: capital-letter-first -#: pg_backup_tar.c:1276 +#: 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" @@ -1490,7 +1488,7 @@ msgstr "ÑоответÑтвующие Ñхемы не найдены\n" msgid "no matching tables were found\n" msgstr "ÑоответÑтвующие таблицы не найдены\n" -#: pg_dump.c:888 +#: pg_dump.c:897 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -1499,17 +1497,17 @@ msgstr "" "%s ÑохранÑет резервную копию БД в текÑтовом файле или другом виде.\n" "\n" -#: pg_dump.c:889 pg_dumpall.c:547 pg_restore.c:443 +#: pg_dump.c:898 pg_dumpall.c:547 pg_restore.c:443 #, c-format msgid "Usage:\n" msgstr "ИÑпользование:\n" -#: pg_dump.c:890 +#: pg_dump.c:899 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [ПÐРÐМЕТР]... [ИМЯ_БД]\n" -#: pg_dump.c:892 pg_dumpall.c:550 pg_restore.c:446 +#: pg_dump.c:901 pg_dumpall.c:550 pg_restore.c:446 #, c-format msgid "" "\n" @@ -1518,12 +1516,12 @@ msgstr "" "\n" "Общие параметры:\n" -#: pg_dump.c:893 +#: pg_dump.c:902 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr " -f, --file=ИМЯ Ð¸Ð¼Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла или каталога\n" -#: pg_dump.c:894 +#: pg_dump.c:903 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" @@ -1533,7 +1531,7 @@ msgstr "" " (пользовательÑкий | каталог | tar |\n" " текÑтовый (по умолчанию))\n" -#: pg_dump.c:896 +#: pg_dump.c:905 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr "" @@ -1541,23 +1539,23 @@ msgstr "" "чиÑло\n" " заданий\n" -#: pg_dump.c:897 pg_dumpall.c:552 +#: pg_dump.c:906 pg_dumpall.c:552 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose режим подробных Ñообщений\n" -#: pg_dump.c:898 pg_dumpall.c:553 +#: 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:899 +#: 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:900 pg_dumpall.c:554 +#: pg_dump.c:909 pg_dumpall.c:554 #, c-format msgid "" " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" @@ -1565,12 +1563,12 @@ msgstr "" " --lock-wait-timeout=ТÐЙМÐУТ прервать операцию при таймауте блокировки " "таблицы\n" -#: pg_dump.c:901 pg_dumpall.c:555 +#: pg_dump.c:910 pg_dumpall.c:555 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показать Ñту Ñправку и выйти\n" -#: pg_dump.c:903 pg_dumpall.c:556 +#: pg_dump.c:912 pg_dumpall.c:556 #, c-format msgid "" "\n" @@ -1579,17 +1577,17 @@ msgstr "" "\n" "Параметры, управлÑющие выводом:\n" -#: pg_dump.c:904 pg_dumpall.c:557 +#: 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:905 +#: pg_dump.c:914 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs выгрузить также большие объекты\n" -#: pg_dump.c:906 pg_restore.c:457 +#: pg_dump.c:915 pg_restore.c:457 #, c-format msgid "" " -c, --clean clean (drop) database objects before " @@ -1598,7 +1596,7 @@ msgstr "" " -c, --clean очиÑтить (удалить) объекты БД при " "воÑÑтановлении\n" -#: pg_dump.c:907 +#: pg_dump.c:916 #, c-format msgid "" " -C, --create include commands to create database in dump\n" @@ -1606,27 +1604,27 @@ msgstr "" " -C, --create добавить в копию команды ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ‹ " "данных\n" -#: pg_dump.c:908 +#: pg_dump.c:917 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=КОДИРОВКРвыгружать данные в заданной кодировке\n" -#: pg_dump.c:909 +#: pg_dump.c:918 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=СХЕМРвыгрузить только указанную Ñхему(Ñ‹)\n" -#: pg_dump.c:910 +#: 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:911 pg_dumpall.c:560 +#: 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:912 +#: pg_dump.c:921 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -1635,12 +1633,12 @@ msgstr "" " -O, --no-owner не воÑÑтанавливать владение объектами\n" " при иÑпользовании текÑтового формата\n" -#: pg_dump.c:914 pg_dumpall.c:563 +#: 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:915 +#: pg_dump.c:924 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in plain-text " @@ -1649,27 +1647,27 @@ msgstr "" " -S, --superuser=ИМЯ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, который будет задейÑтвован\n" " при воÑÑтановлении из текÑтового формата\n" -#: pg_dump.c:916 +#: pg_dump.c:925 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=ТÐБЛИЦРвыгрузить только указанную таблицу(Ñ‹)\n" -#: pg_dump.c:917 +#: 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:918 pg_dumpall.c:566 +#: 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:919 pg_dumpall.c:567 +#: 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:920 pg_dumpall.c:568 +#: pg_dump.c:929 pg_dumpall.c:568 #, c-format msgid "" " --column-inserts dump data as INSERT commands with column " @@ -1678,7 +1676,7 @@ msgstr "" " --column-inserts выгружать данные в виде INSERT Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ " "Ñтолбцов\n" -#: pg_dump.c:921 pg_dumpall.c:569 +#: pg_dump.c:930 pg_dumpall.c:569 #, c-format msgid "" " --disable-dollar-quoting disable dollar quoting, use SQL standard " @@ -1687,7 +1685,7 @@ msgstr "" " --disable-dollar-quoting отключить ÑпецÑтроки Ñ $, выводить Ñтроки\n" " по Ñтандарту SQL\n" -#: pg_dump.c:922 pg_dumpall.c:570 pg_restore.c:473 +#: pg_dump.c:931 pg_dumpall.c:570 pg_restore.c:473 #, c-format msgid "" " --disable-triggers disable triggers during data-only restore\n" @@ -1695,7 +1693,7 @@ msgstr "" " --disable-triggers отключить триггеры при воÑÑтановлении\n" " только данных, без Ñхемы\n" -#: pg_dump.c:923 +#: pg_dump.c:932 #, c-format msgid "" " --enable-row-security enable row security (dump only content user " @@ -1706,19 +1704,19 @@ msgstr "" "только\n" " те данные, которые доÑтупны пользователю)\n" -#: pg_dump.c:925 +#: 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:926 pg_dumpall.c:571 pg_restore.c:475 +#: 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:927 pg_dumpall.c:572 +#: pg_dump.c:936 pg_dumpall.c:572 #, c-format msgid "" " --inserts dump data as INSERT commands, rather than " @@ -1727,13 +1725,13 @@ msgstr "" " --inserts выгрузить данные в виде команд INSERT, не " "COPY\n" -#: pg_dump.c:928 pg_dumpall.c:573 +#: 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:929 +#: pg_dump.c:938 #, c-format msgid "" " --no-synchronized-snapshots do not use synchronized snapshots in parallel " @@ -1742,20 +1740,20 @@ msgstr "" " --no-synchronized-snapshots не иÑпользовать Ñинхронизированные Ñнимки\n" " в параллельных заданиÑÑ…\n" -#: pg_dump.c:930 pg_dumpall.c:574 +#: 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:931 pg_dumpall.c:575 +#: 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:932 pg_dumpall.c:576 +#: pg_dump.c:941 pg_dumpall.c:576 #, c-format msgid "" " --quote-all-identifiers quote all identifiers, even if not key words\n" @@ -1763,7 +1761,7 @@ msgstr "" " --quote-all-identifiers заключать в кавычки вÑе идентификаторы,\n" " а не только ключевые Ñлова\n" -#: pg_dump.c:933 +#: pg_dump.c:942 #, c-format msgid "" " --section=SECTION dump named section (pre-data, data, or post-" @@ -1772,7 +1770,7 @@ msgstr "" " --section=РÐЗДЕЛ выгрузить заданный раздел\n" " (pre-data, data или post-data)\n" -#: pg_dump.c:934 +#: pg_dump.c:943 #, c-format msgid "" " --serializable-deferrable wait until the dump can run without " @@ -1781,13 +1779,13 @@ msgstr "" " --serializable-deferrable дождатьÑÑ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° Ð´Ð»Ñ Ð²Ñ‹Ð³Ñ€ÑƒÐ·ÐºÐ¸ данных без " "аномалий\n" -#: pg_dump.c:935 +#: pg_dump.c:944 #, c-format msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" msgstr "" " --snapshot=СÐИМОК иÑпользовать при выгрузке заданный Ñнимок\n" -#: pg_dump.c:936 pg_restore.c:481 +#: pg_dump.c:945 pg_restore.c:481 #, c-format msgid "" " --strict-names require table and/or schema include patterns " @@ -1800,7 +1798,7 @@ msgstr "" "минимум\n" " один объект\n" -#: pg_dump.c:938 pg_dumpall.c:577 pg_restore.c:483 +#: pg_dump.c:947 pg_dumpall.c:577 pg_restore.c:483 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1812,7 +1810,7 @@ msgstr "" " уÑтанавливать владельца, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹\n" " SET SESSION AUTHORIZATION вмеÑто ALTER OWNER\n" -#: pg_dump.c:942 pg_dumpall.c:581 pg_restore.c:487 +#: pg_dump.c:951 pg_dumpall.c:581 pg_restore.c:487 #, c-format msgid "" "\n" @@ -1821,33 +1819,33 @@ msgstr "" "\n" "Параметры подключениÑ:\n" -#: pg_dump.c:943 +#: pg_dump.c:952 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" msgstr " -d, --dbname=БД Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных Ð´Ð»Ñ Ð²Ñ‹Ð³Ñ€ÑƒÐ·ÐºÐ¸\n" -#: pg_dump.c:944 pg_dumpall.c:583 pg_restore.c:488 +#: 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:945 pg_dumpall.c:585 pg_restore.c:489 +#: 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:946 pg_dumpall.c:586 pg_restore.c:490 +#: 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:947 pg_dumpall.c:587 pg_restore.c:491 +#: 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:948 pg_dumpall.c:588 pg_restore.c:492 +#: pg_dump.c:957 pg_dumpall.c:588 pg_restore.c:492 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -1855,12 +1853,12 @@ msgid "" msgstr "" " -W, --password запрашивать пароль вÑегда (обычно не требуетÑÑ)\n" -#: pg_dump.c:949 pg_dumpall.c:589 +#: 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:951 +#: pg_dump.c:960 #, c-format msgid "" "\n" @@ -1873,208 +1871,208 @@ msgstr "" "PGDATABASE.\n" "\n" -#: pg_dump.c:953 pg_dumpall.c:593 pg_restore.c:499 +#: pg_dump.c:962 pg_dumpall.c:593 pg_restore.c:499 #, c-format msgid "Report bugs to .\n" msgstr "Об ошибках Ñообщайте по адреÑу .\n" -#: pg_dump.c:970 +#: pg_dump.c:979 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "указана Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚ÑÐºÐ°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° \"%s\"\n" -#: pg_dump.c:1112 +#: 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:1181 +#: pg_dump.c:1190 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "указан неверный формат вывода: \"%s\"\n" -#: pg_dump.c:1204 +#: 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:1222 +#: pg_dump.c:1231 #, c-format msgid "no matching schemas were found for pattern \"%s\"\n" msgstr "Ñхемы, ÑоответÑтвующие шаблону \"%s\", не найдены\n" -#: pg_dump.c:1275 +#: pg_dump.c:1284 #, c-format msgid "no matching tables were found for pattern \"%s\"\n" msgstr "таблицы, ÑоответÑтвующие шаблону \"%s\", не найдены\n" -#: pg_dump.c:1662 +#: pg_dump.c:1671 #, c-format msgid "dumping contents of table \"%s.%s\"\n" msgstr "выгрузка Ñодержимого таблицы \"%s.%s\"\n" -#: pg_dump.c:1786 +#: pg_dump.c:1795 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "Ошибка выгрузки таблицы \"%s\": Ñбой в PQendcopy().\n" -#: pg_dump.c:1787 pg_dump.c:1797 +#: pg_dump.c:1796 pg_dump.c:1806 #, c-format msgid "Error message from server: %s" msgstr "Сообщение об ошибке Ñ Ñервера: %s" -#: pg_dump.c:1788 pg_dump.c:1798 +#: pg_dump.c:1797 pg_dump.c:1807 #, c-format msgid "The command was: %s\n" msgstr "ВыполнÑлаÑÑŒ команда: %s\n" -#: pg_dump.c:1796 +#: pg_dump.c:1805 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed.\n" msgstr "Ошибка выгрузки таблицы \"%s\": Ñбой в PQgetResult().\n" -#: pg_dump.c:2445 +#: pg_dump.c:2454 #, c-format msgid "saving database definition\n" msgstr "Ñохранение Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных\n" -#: pg_dump.c:2779 +#: pg_dump.c:2788 #, c-format msgid "saving encoding = %s\n" msgstr "Ñохранение кодировки (%s)\n" -#: pg_dump.c:2806 +#: pg_dump.c:2815 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "Ñохранение standard_conforming_strings (%s)\n" -#: pg_dump.c:2846 +#: pg_dump.c:2855 #, c-format msgid "reading large objects\n" msgstr "чтение больших объектов\n" -#: pg_dump.c:3033 +#: pg_dump.c:3056 #, c-format msgid "saving large objects\n" msgstr "Ñохранение больших объектов\n" -#: pg_dump.c:3080 +#: pg_dump.c:3103 #, c-format msgid "error reading large object %u: %s" msgstr "ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð³Ð¾ объекта %u: %s" -#: pg_dump.c:3132 +#: pg_dump.c:3155 #, c-format msgid "reading row security enabled for table \"%s.%s\"\n" msgstr "чтение информации о защите Ñтрок Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s.%s\"\n" -#: pg_dump.c:3163 +#: pg_dump.c:3186 #, c-format msgid "reading policies for table \"%s.%s\"\n" msgstr "чтение политик таблицы \"%s.%s\"\n" -#: pg_dump.c:3296 +#: pg_dump.c:3319 #, c-format msgid "unexpected policy command type: \"%s\"\n" msgstr "нераÑпознанный тип команды в политике: \"%s\"\n" -#: pg_dump.c:3515 +#: pg_dump.c:3538 #, c-format msgid "could not find parent extension for %s\n" msgstr "не удалоÑÑŒ найти родительÑкое раÑширение Ð´Ð»Ñ %s\n" # TO REVIEW -#: pg_dump.c:3683 +#: pg_dump.c:3731 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: у Ñхемы \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:3726 +#: pg_dump.c:3774 #, c-format msgid "schema with OID %u does not exist\n" msgstr "Ñхема Ñ OID %u не ÑущеÑтвует\n" -#: pg_dump.c:4141 +#: pg_dump.c:4189 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: у типа данных \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:4255 +#: pg_dump.c:4303 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: у оператора \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:4600 +#: pg_dump.c:4648 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: у клаÑÑа операторов \"%s\" по-видимому неправильный " "владелец\n" -#: pg_dump.c:4691 +#: pg_dump.c:4739 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: у ÑемейÑтва операторов \"%s\" по-видимому неправильный " "владелец\n" -#: pg_dump.c:4892 +#: pg_dump.c:4940 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: у агрегатной функции \"%s\" по-видимому неправильный " "владелец\n" -#: pg_dump.c:5189 +#: pg_dump.c:5237 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: у функции \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:6051 +#: pg_dump.c:6099 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: у таблицы \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:6093 pg_dump.c:16593 +#: 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 не удалоÑÑŒ найти родительÑкую таблицу " "поÑледовательноÑти Ñ OID %u\n" -#: pg_dump.c:6220 +#: pg_dump.c:6268 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "чтение индекÑов таблицы \"%s.%s\"\n" -#: pg_dump.c:6588 +#: pg_dump.c:6636 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "чтение ограничений внешних ключей таблицы \"%s.%s\"\n" -#: pg_dump.c:6834 +#: 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:6928 +#: pg_dump.c:6976 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "чтение триггеров таблицы \"%s.%s\"\n" -#: pg_dump.c:7093 +#: pg_dump.c:7141 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " @@ -2083,32 +2081,32 @@ msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ вернул Ð¸Ð¼Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ таблицы Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° внешнего ключа \"%s\" в " "таблице \"%s\" (OID целевой таблицы: %u)\n" -#: pg_dump.c:7748 +#: pg_dump.c:7796 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "поиÑк Ñтолбцов и типов таблицы \"%s.%s\"\n" -#: pg_dump.c:7927 +#: pg_dump.c:7975 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð½ÑƒÐ¼ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтолбцов в таблице \"%s\"\n" -#: pg_dump.c:7961 +#: pg_dump.c:8009 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "поиÑк выражений по умолчанию Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s.%s\"\n" -#: pg_dump.c:8014 +#: pg_dump.c:8062 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "неверное значение adnum (%d) в таблице \"%s\"\n" -#: pg_dump.c:8086 +#: pg_dump.c:8134 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "поиÑк ограничений-проверок Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s.%s\"\n" -#: pg_dump.c:8182 +#: 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" @@ -2119,72 +2117,72 @@ msgstr[1] "" msgstr[2] "" "ожидалоÑÑŒ %d ограничений-проверок Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\", но найдено: %d\n" -#: pg_dump.c:8186 +#: pg_dump.c:8234 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(Возможно повреждены ÑиÑтемные каталоги.)\n" -#: pg_dump.c:9764 +#: pg_dump.c:9813 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: у типа данных \"%s\" по-видимому неправильный тип типа\n" -#: pg_dump.c:11306 +#: pg_dump.c:11355 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое значение в маÑÑиве proargmodes\n" -#: pg_dump.c:11684 +#: pg_dump.c:11733 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ разобрать маÑÑив proallargtypes\n" -#: pg_dump.c:11700 +#: pg_dump.c:11749 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ разобрать маÑÑив proargmodes\n" -#: pg_dump.c:11714 +#: pg_dump.c:11763 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ разобрать маÑÑив proargnames\n" -#: pg_dump.c:11725 +#: pg_dump.c:11774 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ разобрать маÑÑив proconfig\n" # TO REVEIW -#: pg_dump.c:11796 +#: pg_dump.c:11845 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "недопуÑтимое значение provolatile Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ \"%s\"\n" # TO REVEIW -#: pg_dump.c:11840 pg_dump.c:13889 +#: 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:11948 pg_dump.c:12058 pg_dump.c:12065 +#: pg_dump.c:11997 pg_dump.c:12107 pg_dump.c:12114 #, c-format -msgid "unable to find function definition for OID %u" -msgstr "не удалоÑÑŒ найти определение функции Ð´Ð»Ñ OID %u" +msgid "could not find function definition for function with OID %u\n" +msgstr "не удалоÑÑŒ найти определение функции Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ OID %u\n" -#: pg_dump.c:11993 +#: 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:11996 +#: pg_dump.c:12045 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое значение в поле pg_cast.castmethod\n" -#: pg_dump.c:12086 +#: pg_dump.c:12135 #, c-format msgid "" "WARNING: bogus transform definition, at least one of trffromsql and trftosql " @@ -2193,27 +2191,27 @@ msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое определение Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ (trffromsql или " "trftosql должно быть ненулевым)\n" -#: pg_dump.c:12103 +#: pg_dump.c:12152 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое значение в поле pg_transform.trffromsql\n" -#: pg_dump.c:12124 +#: pg_dump.c:12173 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое значение в поле pg_transform.trftosql\n" -#: pg_dump.c:12515 +#: pg_dump.c:12564 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: оператор Ñ OID %s не найден\n" -#: pg_dump.c:12579 +#: pg_dump.c:12628 #, c-format msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: неверный тип \"%c\" метода доÑтупа \"%s\"\n" -#: pg_dump.c:13780 +#: pg_dump.c:13841 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " @@ -2222,17 +2220,17 @@ msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s не может быть правильно выгружена Ð´Ð»Ñ " "Ñтой верÑии базы данных; Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð°\n" -#: pg_dump.c:14652 +#: pg_dump.c:14713 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "нераÑпознанный тип объекта в определении прав по умолчанию: %d)\n" -#: pg_dump.c:14670 +#: pg_dump.c:14731 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "не удалоÑÑŒ разобрать ÑпиÑок прав по умолчанию (%s)\n" -#: pg_dump.c:14741 +#: pg_dump.c:14812 #, c-format msgid "" "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) " @@ -2241,7 +2239,7 @@ msgstr "" "не удалоÑÑŒ разобрать изначальный ÑпиÑок GRANT ACL (%s) или изначальный " "ÑпиÑок REVOKE ACL (%s) Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° \"%s\" (%s)\n" -#: pg_dump.c:14749 +#: pg_dump.c:14820 #, c-format msgid "" "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s" @@ -2250,13 +2248,13 @@ msgstr "" "не удалоÑÑŒ разобрать ÑпиÑок GRANT ACL (%s) или ÑпиÑок REVOKE ACL (%s) Ð´Ð»Ñ " "объекта \"%s\" (%s)\n" -#: pg_dump.c:15233 +#: pg_dump.c:15305 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° получение Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" не возвратил данные\n" -#: pg_dump.c:15236 +#: pg_dump.c:15308 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one definition\n" @@ -2264,27 +2262,27 @@ msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" возвратил неÑколько " "определений\n" -#: pg_dump.c:15243 +#: pg_dump.c:15315 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "определение предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" пуÑтое (длина равна нулю)\n" -#: pg_dump.c:16002 +#: pg_dump.c:16074 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "неверный номер Ñтолбца %d Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\"\n" -#: pg_dump.c:16131 +#: pg_dump.c:16203 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "отÑутÑтвует Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ \"%s\"\n" -#: pg_dump.c:16334 +#: pg_dump.c:16406 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "нераÑпознанный тип ограничениÑ: %c\n" -#: pg_dump.c:16488 pg_dump.c:16661 +#: 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 "" @@ -2299,23 +2297,23 @@ msgstr[2] "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° получение данных поÑледовательноÑти \"%s\" вернул %d Ñтрок " "(ожидалаÑÑŒ 1)\n" -#: pg_dump.c:16499 +#: 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:16759 +#: pg_dump.c:16831 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "неожиданное значение tgtype: %d\n" -#: pg_dump.c:16841 +#: 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:17038 +#: pg_dump.c:17120 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " @@ -2324,12 +2322,12 @@ msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° получение правила \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" возвратил неверное " "чиÑло Ñтрок\n" -#: pg_dump.c:17427 +#: pg_dump.c:17509 #, c-format msgid "reading dependency data\n" msgstr "чтение данных о завиÑимоÑÑ‚ÑÑ…\n" -#: pg_dump.c:17984 +#: pg_dump.c:18066 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ разобрать маÑÑив reloptions\n" @@ -2879,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" @@ -2900,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 1f8db16cf1..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, diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index 013c26bd6d..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"), 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 56fffef2fa..ce19d2e13e 100644 --- a/src/bin/pg_resetxlog/po/fr.po +++ b/src/bin/pg_resetxlog/po/fr.po @@ -9,15 +9,15 @@ 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=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 @@ -55,88 +55,88 @@ 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" #. 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" -#: 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" "-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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: pg_resetxlog.c:338 +#: pg_resetxlog.c:342 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -145,7 +145,7 @@ msgstr "" "%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" @@ -155,7 +155,7 @@ msgstr "" "Si ces valeurs semblent acceptables, utiliser -f pour forcer la\n" "réinitialisation.\n" -#: pg_resetxlog.c:437 +#: pg_resetxlog.c:441 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -168,12 +168,29 @@ msgstr "" "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" -#: 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" @@ -184,22 +201,17 @@ msgstr "" " 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" - -#: 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" -#: 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" @@ -208,7 +220,7 @@ msgstr "" "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" -#: 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" -#: 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" -#: 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" -#: 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" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "off" msgstr "désactivé" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "on" 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: pg_resetxlog.c:672 +#: pg_resetxlog.c:740 #, c-format msgid "Maximum data alignment: %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" -#: 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" -#: 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" -#: 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" -#: pg_resetxlog.c:711 +#: pg_resetxlog.c:779 #, c-format msgid "" "\n" @@ -399,119 +411,119 @@ msgstr "" "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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: 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" -#: pg_resetxlog.c:1167 +#: pg_resetxlog.c:1235 #, c-format msgid "" "%s resets the PostgreSQL transaction log.\n" @@ -520,7 +532,7 @@ msgstr "" "%s réinitialise le journal des transactions PostgreSQL.\n" "\n" -#: pg_resetxlog.c:1168 +#: pg_resetxlog.c:1236 #, c-format msgid "" "Usage:\n" @@ -531,83 +543,83 @@ msgstr "" " %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" -#: 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" -#: 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" -#: 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" -#: 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" " 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" " (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" -#: 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" @@ -616,29 +628,29 @@ msgstr "" "\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/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 fa14545638..233c7ab95e 100644 --- a/src/bin/pg_resetxlog/po/ru.po +++ b/src/bin/pg_resetxlog/po/ru.po @@ -5,14 +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: 2017-02-01 23:13+0000\n" -"PO-Revision-Date: 2016-12-20 18:26+0300\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" @@ -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,190 +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" # skip-rule: capital-letter-first -#: pg_resetxlog.c:645 +#: pg_resetxlog.c:713 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "Ð›Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ поÑледней конт. точки: %u\n" # skip-rule: no-space-after-period -#: pg_resetxlog.c:647 +#: 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 "вкл." # skip-rule: capital-letter-first -#: pg_resetxlog.c:649 +#: pg_resetxlog.c:717 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" msgstr "NextXID поÑледней конт. точки: %u:%u\n" # skip-rule: capital-letter-first -#: pg_resetxlog.c:652 +#: pg_resetxlog.c:720 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "NextOID поÑледней конт. точки: %u\n" # skip-rule: capital-letter-first -#: pg_resetxlog.c:654 +#: pg_resetxlog.c:722 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "NextMultiXactId поÑлед. конт. точки: %u\n" # skip-rule: capital-letter-first -#: pg_resetxlog.c:656 +#: pg_resetxlog.c:724 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "NextMultiOffset поÑлед. конт. точки: %u\n" # skip-rule: capital-letter-first -#: pg_resetxlog.c:658 +#: pg_resetxlog.c:726 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "oldestXID поÑледней конт. точки: %u\n" # skip-rule: capital-letter-first -#: pg_resetxlog.c:660 +#: pg_resetxlog.c:728 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "БД Ñ oldestXID поÑледней конт. точки: %u\n" # skip-rule: capital-letter-first -#: pg_resetxlog.c:662 +#: pg_resetxlog.c:730 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "oldestActiveXID поÑледней к. Ñ‚.: %u\n" # skip-rule: capital-letter-first -#: pg_resetxlog.c:664 +#: pg_resetxlog.c:732 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "oldestMultiXid поÑледней конт. точки: %u\n" # skip-rule: capital-letter-first, double-space -#: pg_resetxlog.c:666 +#: pg_resetxlog.c:734 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" msgstr "БД Ñ oldestMulti поÑледней к. Ñ‚.: %u\n" # skip-rule: capital-letter-first, double-space -#: pg_resetxlog.c:668 +#: pg_resetxlog.c:736 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "oldestCommitTsXid поÑледней к. Ñ‚.: %u\n" # skip-rule: capital-letter-first, double-space -#: pg_resetxlog.c:670 +#: 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" # skip-rule: double-space -#: pg_resetxlog.c:677 +#: 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" @@ -418,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 " @@ -487,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" @@ -541,7 +557,7 @@ msgstr "" "%s ÑбраÑывает журнал транзакций PostgreSQL.\n" "\n" -#: pg_resetxlog.c:1168 +#: pg_resetxlog.c:1236 #, c-format msgid "" "Usage:\n" @@ -552,12 +568,12 @@ msgstr "" " %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 " @@ -566,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 " @@ -595,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" @@ -609,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/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 684715e7fa..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-10-24 20:44+0000\n" -"PO-Revision-Date: 2016-10-25 18:51+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.8\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 @@ -279,97 +279,97 @@ msgstr "n'a pas pu récupérer la liste des fichiers : %s" 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:240 +#: 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:242 +#: libpq_fetch.c:264 #, c-format msgid "getting file chunks\n" msgstr "récupération des parties de fichier\n" -#: libpq_fetch.c:245 +#: 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:265 +#: 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:271 +#: 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:277 +#: 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:285 +#: 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:291 +#: 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:295 +#: 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:317 +#: 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:324 +#: 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:353 +#: 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:358 +#: 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:369 +#: 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:401 +#: 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:427 +#: 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:435 +#: 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:477 +#: 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:483 +#: 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" 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/pt_BR.po b/src/bin/pg_rewind/po/pt_BR.po index 378c903507..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-10-25 16:32-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" @@ -280,97 +280,97 @@ msgstr "não pôde obter lista de arquivos: %s" msgid "unexpected result set while fetching file list\n" msgstr "conjunto de resultados inesperado ao obter lista de arquivos\n" -#: libpq_fetch.c:240 +#: libpq_fetch.c:262 #, c-format msgid "could not send query: %s" msgstr "não pôde enviar consulta: %s" -#: libpq_fetch.c:242 +#: libpq_fetch.c:264 #, c-format msgid "getting file chunks\n" msgstr "obtendo blocos do arquivo\n" -#: libpq_fetch.c:245 +#: 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:265 +#: 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:271 +#: 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:277 +#: 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:285 +#: 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:291 +#: 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:295 +#: 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:317 +#: 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:324 +#: 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:353 +#: 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:358 +#: 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:369 +#: libpq_fetch.c:391 #, c-format msgid "fetched file \"%s\", length %d\n" msgstr "arquivo \"%s\" obtido, tamanho %d\n" -#: libpq_fetch.c:401 +#: 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:427 +#: 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:435 +#: 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:477 +#: 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:483 +#: libpq_fetch.c:506 #, c-format msgid "unexpected result while sending file list: %s" msgstr "resultado inesperado ao enviar lista de arquivos: %s" diff --git a/src/bin/pg_rewind/po/ru.po b/src/bin/pg_rewind/po/ru.po index c31850c064..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: 2017-02-01 23:14+0000\n" -"PO-Revision-Date: 2016-11-24 14:26+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 @@ -289,32 +289,32 @@ msgstr "не удалоÑÑŒ получить ÑпиÑок файлов: %s" msgid "unexpected result set while fetching file list\n" msgstr "неожиданный результат при получении ÑпиÑка файлов\n" -#: libpq_fetch.c:240 +#: libpq_fetch.c:262 #, c-format msgid "could not send query: %s" msgstr "не удалоÑÑŒ отправить запроÑ: %s" -#: libpq_fetch.c:242 +#: libpq_fetch.c:264 #, c-format msgid "getting file chunks\n" msgstr "получение Ñегментов файлов\n" -#: libpq_fetch.c:245 +#: libpq_fetch.c:267 #, c-format msgid "could not set libpq connection to single row mode\n" msgstr "не удалоÑÑŒ перевеÑти подключение libpq в одноÑтрочный режим\n" -#: libpq_fetch.c:265 +#: libpq_fetch.c:287 #, c-format msgid "unexpected result while fetching remote files: %s" msgstr "неожиданный результат при получении удалённых файлов: %s" -#: libpq_fetch.c:271 +#: libpq_fetch.c:293 #, c-format msgid "unexpected result set size while fetching remote files\n" msgstr "неожиданный размер набора результатов при получении удалённых файлов\n" -#: libpq_fetch.c:277 +#: libpq_fetch.c:299 #, c-format msgid "" "unexpected data types in result set while fetching remote files: %u %u %u\n" @@ -322,68 +322,68 @@ msgstr "" "неожиданные типы данных в наборе результатов при получении удалённых файлов: " "%u %u %u\n" -#: libpq_fetch.c:285 +#: libpq_fetch.c:307 #, c-format msgid "unexpected result format while fetching remote files\n" msgstr "неожиданный формат результата при получении удалённых файлов\n" -#: libpq_fetch.c:291 +#: libpq_fetch.c:313 #, c-format msgid "unexpected null values in result while fetching remote files\n" msgstr "" "неожиданные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ NULL в результате при получении удалённых файлов\n" -#: libpq_fetch.c:295 +#: libpq_fetch.c:317 #, c-format msgid "unexpected result length while fetching remote files\n" msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° результата при получении удалённых файлов\n" -#: libpq_fetch.c:317 +#: 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:324 +#: 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:353 +#: libpq_fetch.c:375 #, c-format msgid "could not fetch remote file \"%s\": %s" msgstr "не удалоÑÑŒ получить удалённый файл \"%s\": %s" -#: libpq_fetch.c:358 +#: libpq_fetch.c:380 #, c-format msgid "unexpected result set while fetching remote file \"%s\"\n" msgstr "неожиданный набор результатов при получении удалённого файла \"%s\"\n" -#: libpq_fetch.c:369 +#: libpq_fetch.c:391 #, c-format msgid "fetched file \"%s\", length %d\n" msgstr "получен файл \"%s\", длина %d\n" -#: libpq_fetch.c:401 +#: libpq_fetch.c:424 #, c-format msgid "could not send COPY data: %s" msgstr "не удалоÑÑŒ отправить данные COPY: %s" -#: libpq_fetch.c:427 +#: libpq_fetch.c:450 #, c-format msgid "could not create temporary table: %s" msgstr "не удалоÑÑŒ Ñоздать временную таблицу: %s" -#: libpq_fetch.c:435 +#: libpq_fetch.c:458 #, c-format msgid "could not send file list: %s" msgstr "не удалоÑÑŒ отправить ÑпиÑок файлов: %s" -#: libpq_fetch.c:477 +#: libpq_fetch.c:500 #, c-format msgid "could not send end-of-COPY: %s" msgstr "не удалоÑÑŒ отправить Ñообщение о завершении копированиÑ: %s" -#: libpq_fetch.c:483 +#: libpq_fetch.c:506 #, c-format msgid "unexpected result while sending file list: %s" msgstr "неожиданный результат при передаче ÑпиÑка: %s" 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_xlogdump/pg_xlogdump.c b/src/bin/pg_xlogdump/pg_xlogdump.c index 7663cb381b..afd5a72058 100644 --- a/src/bin/pg_xlogdump/pg_xlogdump.c +++ b/src/bin/pg_xlogdump/pg_xlogdump.c @@ -366,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. * @@ -390,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++; @@ -425,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; @@ -432,13 +449,15 @@ 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); 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/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/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/describe.c b/src/bin/psql/describe.c index 6ba5b3e363..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); @@ -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; @@ -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 6122c1c2f5..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 ko 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 b7c283d035..de5db3b0b1 100644 --- a/src/bin/psql/po/fr.po +++ b/src/bin/psql/po/fr.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-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" @@ -18,7 +18,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.8.7\n" +"X-Generator: Poedit 1.8.12\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, 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" -#: ../../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" -#: ../../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" @@ -222,7 +222,7 @@ msgid "%s: invalid encoding name or conversion procedure not found\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" @@ -822,16 +822,16 @@ 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." +"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" -#: copy.c:695 +#: copy.c:705 msgid "trying to exit copy mode" msgstr "tente de sortir du mode copy" @@ -860,24 +860,24 @@ msgstr "\\crosstabview : la colonne de données doit être spécifiée quand la msgid "\\crosstabview: maximum number of columns (%d) exceeded\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" -#: 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" -#: crosstabview.c:671 +#: crosstabview.c:672 #, c-format msgid "\\crosstabview: ambiguous column name: \"%s\"\n" msgstr "" "\\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" @@ -1422,6 +1422,16 @@ msgstr "Triggers toujours activés :" msgid "Triggers firing on replica only:" 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" @@ -3359,12 +3369,12 @@ msgstr "%s : mémoire épuisée\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 @@ -3404,14 +3414,14 @@ msgstr "%s : mémoire épuisée\n" 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" #: 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,16 +3430,16 @@ 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" -#: 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" @@ -3439,9 +3449,9 @@ msgstr "nouveau_schéma" msgid "where aggregate_signature is:" 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,9 +3459,9 @@ msgstr "où signature_agrégat est :" 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 @@ -3459,16 +3469,16 @@ msgstr "mode_argument" msgid "argname" 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 @@ -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" -#: 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 @@ -3538,8 +3547,8 @@ msgid "where abbreviated_grant_or_revoke is one of:" 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 @@ -3552,7 +3561,7 @@ msgstr "où abbreviated_grant_or_revoke fait partie de :" msgid "role_name" 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 :" -#: 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: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:310 sql_help.c:1404 sql_help.c:3538 msgid "aggregate_name" 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" -#: 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" -#: 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 :" -#: 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 :" -#: 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" -#: 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" -#: sql_help.c:516 sql_help.c:1886 +#: sql_help.c:518 sql_help.c:1886 msgid "result_rows" 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ésultat" 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 :" -#: 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" -#: 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" @@ -5430,7 +5439,7 @@ msgstr "%s : n'a pas pu trouver son propre exécutable\n" msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%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" @@ -5441,906 +5450,802 @@ msgstr "" "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" - -#~ msgid "" -#~ "ALTER DOMAIN name\n" -#~ " { SET DEFAULT expression | DROP DEFAULT }\n" -#~ "ALTER DOMAIN name\n" -#~ " { SET | DROP } NOT NULL\n" -#~ "ALTER DOMAIN name\n" -#~ " ADD domain_constraint\n" -#~ "ALTER DOMAIN name\n" -#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -#~ "ALTER DOMAIN name\n" -#~ " OWNER TO new_owner \n" -#~ "ALTER DOMAIN name\n" -#~ " SET SCHEMA new_schema" -#~ msgstr "" -#~ "ALTER DOMAIN 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 "" -#~ "ALTER FOREIGN DATA WRAPPER name\n" -#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" -#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]\n" -#~ "ALTER FOREIGN DATA WRAPPER name OWNER TO new_owner" -#~ msgstr "" -#~ "ALTER FOREIGN DATA WRAPPER 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 "" -#~ "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" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" +#~ " READ COMMITTED | READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" #~ 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 [, ... ] )" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username\n" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" +#~ "RESET SESSION AUTHORIZATION" #~ 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 [, ... ] )" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION nom_utilisateur\n" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" +#~ "RESET SESSION AUTHORIZATION" #~ msgid "" -#~ "ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" -#~ "ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" +#~ "SET [ SESSION | LOCAL ] ROLE rolename\n" +#~ "SET [ SESSION | LOCAL ] ROLE NONE\n" +#~ "RESET ROLE" #~ msgstr "" -#~ "ALTER [ PROCEDURAL ] LANGUAGE nom RENAME TO nouveau_nom\n" -#~ "ALTER [ PROCEDURAL ] LANGUAGE nom OWNER TO nouveau_propriétaire" +#~ "SET [ SESSION | LOCAL ] ROLE nom_rôle\n" +#~ "SET [ SESSION | LOCAL ] ROLE NONE\n" +#~ "RESET ROLE" -#~ 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 "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }" +#~ msgstr "SET CONSTRAINTS { ALL | nom [, ...] } { DEFERRED | IMMEDIATE }" #~ 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" -#~ "\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" +#~ "[ 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" -#~ "ALTER ROLE name RENAME TO newname\n" +#~ "where from_item can be one of:\n" #~ "\n" -#~ "ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }\n" -#~ "ALTER ROLE name SET configuration_parameter FROM CURRENT\n" -#~ "ALTER ROLE name RESET configuration_parameter\n" -#~ "ALTER ROLE name RESET ALL" -#~ msgstr "" -#~ "ALTER ROLE nom [ [ WITH ] option [ ... ] ]\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" -#~ "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" +#~ "and with_query is:\n" #~ "\n" -#~ "ALTER ROLE nom RENAME TO nouveau_nom\n" +#~ " with_query_name [ ( column_name [, ...] ) ] AS ( select )\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" - -#~ msgid "" -#~ "ALTER SCHEMA name RENAME TO newname\n" -#~ "ALTER SCHEMA name OWNER TO newowner" +#~ "TABLE { [ ONLY ] table_name [ * ] | with_query_name }" #~ msgstr "" -#~ "ALTER SCHEMA nom RENAME TO nouveau_nom\n" -#~ "ALTER SCHEMA nom OWNER TO nouveau_propriétaire" - -#~ 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 "" -#~ "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 "" -#~ "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" +#~ "[ 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" -#~ "where action is one of:\n" +#~ "avec élément_from faisant parti de :\n" #~ "\n" -#~ " ADD [ COLUMN ] column type [ column_constraint [ ... ] ]\n" -#~ " DROP [ COLUMN ] column [ RESTRICT | CASCADE ]\n" -#~ " ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ]\n" -#~ " ALTER [ COLUMN ] column SET DEFAULT expression\n" -#~ " ALTER [ COLUMN ] column DROP DEFAULT\n" -#~ " ALTER [ COLUMN ] column { SET | DROP } NOT NULL\n" -#~ " ALTER [ COLUMN ] column SET STATISTICS integer\n" -#~ " ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n" -#~ " ADD table_constraint\n" -#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -#~ " DISABLE TRIGGER [ trigger_name | ALL | USER ]\n" -#~ " ENABLE TRIGGER [ trigger_name | ALL | USER ]\n" -#~ " ENABLE REPLICA TRIGGER trigger_name\n" -#~ " ENABLE ALWAYS TRIGGER trigger_name\n" -#~ " DISABLE RULE rewrite_rule_name\n" -#~ " ENABLE RULE rewrite_rule_name\n" -#~ " ENABLE REPLICA RULE rewrite_rule_name\n" -#~ " ENABLE ALWAYS RULE rewrite_rule_name\n" -#~ " CLUSTER ON index_name\n" -#~ " SET WITHOUT CLUSTER\n" -#~ " SET WITH OIDS\n" -#~ " SET WITHOUT OIDS\n" -#~ " SET ( storage_parameter = value [, ... ] )\n" -#~ " RESET ( storage_parameter [, ... ] )\n" -#~ " INHERIT parent_table\n" -#~ " NO INHERIT parent_table\n" -#~ " OWNER TO new_owner\n" -#~ " SET TABLESPACE new_tablespace" -#~ msgstr "" -#~ "ALTER TABLE [ ONLY ] 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" +#~ " [ 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" -#~ "où action peut être :\n" +#~ "et requête_with est:\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" - -#~ 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 "" -#~ "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 "" -#~ "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 "ALTER TEXT SEARCH PARSER name RENAME TO newname" -#~ msgstr "ALTER TEXT SEARCH PARSER nom RENAME TO nouveau_nom" +#~ " nom_requête_with [ ( nom_colonne [, ...] ) ] AS ( select )\n" +#~ "\n" +#~ "TABLE { [ ONLY ] nom_table [ * ] | nom_requête_with }" -#~ msgid "ALTER TEXT SEARCH TEMPLATE name RENAME TO newname" -#~ msgstr "ALTER TEXT SEARCH TEMPLATE nom RENAME TO nouveau_nom" +#~ msgid "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name" +#~ msgstr "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] nom_retour" -#~ msgid "ALTER TRIGGER name ON table RENAME TO newname" -#~ msgstr "ALTER TRIGGER nom ON table RENAME TO nouveau_nom" +#~ msgid "ROLLBACK PREPARED transaction_id" +#~ msgstr "ROLLBACK PREPARED id_transaction" -#~ 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 "ROLLBACK [ WORK | TRANSACTION ]" +#~ msgstr "ROLLBACK [ WORK | TRANSACTION ]" #~ msgid "" -#~ "ALTER USER name [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "where option can be:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT connlimit\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -#~ " | VALID UNTIL 'timestamp' \n" -#~ "\n" -#~ "ALTER USER name RENAME TO newname\n" +#~ "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" -#~ "ALTER USER name SET configuration_parameter { TO | = } { value | DEFAULT }\n" -#~ "ALTER USER name SET configuration_parameter FROM CURRENT\n" -#~ "ALTER USER name RESET configuration_parameter\n" -#~ "ALTER USER name RESET ALL" -#~ msgstr "" -#~ "ALTER USER nom [ [ WITH ] option [ ... ] ]\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" -#~ "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" +#~ "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" -#~ "ALTER USER nom RENAME TO nouveau_nom\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" -#~ "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 "" -#~ "ALTER USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" -#~ " SERVER servername\n" -#~ " OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )" +#~ "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 USER MAPPING FOR { nom_utilisateur | USER | CURRENT_USER | PUBLIC }\n" -#~ " SERVER nom_serveur\n" -#~ " OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ] )" +#~ "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" +#~ "\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 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 "RELEASE [ SAVEPOINT ] savepoint_name" +#~ msgstr "RELEASE [ SAVEPOINT ] nom_retour" -#~ msgid "ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]" -#~ msgstr "ANALYZE [ VERBOSE ] [ table [ ( colonne [, ...] ) ] ]" +#~ msgid "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]" +#~ msgstr "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } nom [ FORCE ]" + +#~ msgid "REASSIGN OWNED BY old_role [, ...] TO new_role" +#~ msgstr "REASSIGN OWNED BY ancien_role [, ...] TO nouveau_role" + +#~ msgid "PREPARE TRANSACTION transaction_id" +#~ msgstr "PREPARE TRANSACTION id_transaction" + +#~ msgid "PREPARE name [ ( datatype [, ...] ) ] AS statement" +#~ msgstr "PREPARE nom_plan [ ( type_données [, ...] ) ] AS instruction" + +#~ msgid "NOTIFY name" +#~ msgstr "NOTIFY nom" + +#~ msgid "MOVE [ direction { FROM | IN } ] cursorname" +#~ msgstr "MOVE [ direction { FROM | IN } ] nom_de_curseur" #~ msgid "" -#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" +#~ "LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n" #~ "\n" -#~ "where transaction_mode is one of:\n" +#~ "where lockmode is one of:\n" #~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" +#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" +#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" #~ msgstr "" -#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" +#~ "LOCK [ TABLE ] [ ONLY ] nom [, ...] [ IN mode_verrouillage MODE ] [ NOWAIT ]\n" #~ "\n" -#~ "où transaction_mode peut être :\n" +#~ "avec mode_verrouillage parmi :\n" #~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" -#~ " READ COMMITTED | READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" - -#~ msgid "CHECKPOINT" -#~ msgstr "CHECKPOINT" +#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" +#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" -#~ msgid "CLOSE { name | ALL }" -#~ msgstr "CLOSE { nom | ALL }" +#~ msgid "LOAD 'filename'" +#~ msgstr "LOAD 'nom_de_fichier'" -#~ msgid "" -#~ "CLUSTER [VERBOSE] tablename [ USING indexname ]\n" -#~ "CLUSTER [VERBOSE]" -#~ msgstr "" -#~ "CLUSTER [VERBOSE] nom_table [ USING nom_index ]\n" -#~ "CLUSTER [VERBOSE]" +#~ msgid "LISTEN name" +#~ msgstr "LISTEN nom" #~ 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'" +#~ "INSERT INTO table [ ( column [, ...] ) ]\n" +#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" #~ 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" +#~ "INSERT INTO table [ ( colonne [, ...] ) ]\n" +#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | requête }\n" +#~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" #~ 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 { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON [ TABLE ] tablename [, ...]\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 { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" +#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" +#~ " ON [ TABLE ] tablename [, ...]\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 { { USAGE | SELECT | UPDATE }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SEQUENCE sequencename [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "or the old syntax\n" +#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON DATABASE dbname [, ...]\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" -#~ ")" -#~ 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 { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "ou l'ancienne syntaxe\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN SERVER servername [, ...]\n" +#~ " TO { [ GROUP ] rolename | 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 { EXECUTE | ALL [ PRIVILEGES ] }\n" +#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "CREATE CAST (sourcetype AS targettype)\n" -#~ " WITHOUT FUNCTION\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON LANGUAGE langname [, ...]\n" +#~ " TO { [ GROUP ] rolename | 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 { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SCHEMA schemaname [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "CREATE CAST (type_source AS type_cible)\n" -#~ " WITHOUT FUNCTION\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" +#~ " ON TABLESPACE tablespacename [, ...]\n" +#~ " TO { [ GROUP ] rolename | 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 )" - -#~ 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 "" -#~ "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 ] ]" +#~ "GRANT role [, ...] TO rolename [, ...] [ WITH ADMIN OPTION ]" #~ 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 ] ]" - -#~ msgid "" -#~ "CREATE DOMAIN name [ AS ] data_type\n" -#~ " [ DEFAULT expression ]\n" -#~ " [ constraint [ ... ] ]\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" -#~ "where constraint is:\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" -#~ "[ CONSTRAINT constraint_name ]\n" -#~ "{ NOT NULL | NULL | CHECK (expression) }" -#~ msgstr "" -#~ "CREATE DOMAIN nom [AS] type_données\n" -#~ " [ DEFAULT expression ]\n" -#~ " [ contrainte [ ... ] ]\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" -#~ "avec comme contrainte :\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" -#~ "[ CONSTRAINT nom_contrainte ]\n" -#~ "{ NOT NULL | NULL | CHECK (expression) }" +#~ "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 ]" #~ msgid "" -#~ "CREATE FOREIGN DATA WRAPPER name\n" -#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" -#~ " [ OPTIONS ( option 'value' [, ... ] ) ]" +#~ "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 FOREIGN DATA WRAPPER nom\n" -#~ " [ VALIDATOR fonction_validation | NO VALIDATOR ]\n" -#~ " [ OPTIONS ( option 'valeur' [, ... ] ) ]" - -#~ 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 [, ...] ) ]" +#~ "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 "" -#~ "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 [, ...] ) ]" +#~ "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 GROUP name [ [ WITH ] option [ ... ] ]\n" +#~ "DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" +#~ " [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "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 "" +#~ "DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" +#~ " [ USING usinglist ]\n" +#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" +#~ msgstr "" +#~ "DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" +#~ " [ USING liste_using ]\n" +#~ " [ WHERE condition | WHERE CURRENT OF nom_curseur ]\n" +#~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" + +#~ msgid "" +#~ "DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" +#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR query" +#~ msgstr "" +#~ "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 ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ]\n" +#~ " AS query" +#~ msgstr "" +#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW nom\n" +#~ " [ ( nom_colonne [, ...] ) ]\n" +#~ " AS requête" + +#~ msgid "" +#~ "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,7 +6265,7 @@ 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" #~ " \n" @@ -6369,6 +6275,7 @@ 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" @@ -6379,145 +6286,141 @@ msgstr "" #~ " | 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 ]" -#~ 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 ]" - -#~ msgid "" -#~ "CREATE [ PROCEDURAL ] LANGUAGE name\n" -#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n" -#~ " HANDLER call_handler [ VALIDATOR valfunction ]" +#~ "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 [ PROCEDURAL ] LANGUAGE nom\n" -#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE nom\n" -#~ " HANDLER gestionnaire_appels [ VALIDATOR fonction_val ]" - -#~ msgid "" -#~ "CREATE OPERATOR name (\n" -#~ " PROCEDURE = funcname\n" -#~ " [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n" -#~ " [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n" -#~ " [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n" -#~ " [, HASHES ] [, MERGES ]\n" -#~ ")" -#~ msgstr "" -#~ "CREATE OPERATOR 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 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 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" -#~ " } [, ... ]" +#~ "CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n" +#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" +#~ " EXECUTE PROCEDURE funcname ( arguments )" #~ 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" +#~ "CREATE TRIGGER nom { BEFORE | AFTER } { événement [ OR ... ] }\n" +#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" +#~ " EXECUTE PROCEDURE nom_fonction ( arguments )" #~ 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 TEMPLATE name (\n" +#~ " [ INIT = init_function , ]\n" +#~ " LEXIZE = lexize_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 TEMPLATE nom (\n" +#~ " [ INIT = fonction_init , ]\n" +#~ " LEXIZE = fonction_lexize\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 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 [ OR REPLACE ] RULE nom AS ON événement\n" -#~ " TO table [ WHERE condition ]\n" -#~ " DO [ ALSO | INSTEAD ] { NOTHING | commande | ( commande ; commande ... ) }" +#~ "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 SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ]\n" -#~ "CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]" +#~ "CREATE TEXT SEARCH DICTIONARY name (\n" +#~ " TEMPLATE = template\n" +#~ " [, option = value [, ... ]]\n" +#~ ")" #~ msgstr "" -#~ "CREATE SCHEMA nom_schema [ AUTHORIZATION nom_utilisateur ]\n" -#~ " [ element_schema [ ... ] ]\n" -#~ "CREATE SCHEMA AUTHORIZATION nom_utilisateur [ element_schema [ ... ] ]" +#~ "CREATE TEXT SEARCH DICTIONARY nom (\n" +#~ " TEMPLATE = modèle\n" +#~ " [, option = valeur [, ... ]]\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 } ]" +#~ "CREATE TEXT SEARCH CONFIGURATION name (\n" +#~ " PARSER = parser_name |\n" +#~ " COPY = source_config\n" +#~ ")" #~ 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 TEXT SEARCH CONFIGURATION nom (\n" +#~ " PARSER = nom_analyseur |\n" +#~ " COPY = config_source\n" +#~ ")" + +#~ msgid "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" +#~ msgstr "" +#~ "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" @@ -6604,144 +6507,148 @@ msgstr "" #~ "[ 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 ]" +#~ "CREATE SERVER servername [ TYPE 'servertype' ] [ VERSION 'serverversion' ]\n" +#~ " FOREIGN DATA WRAPPER fdwname\n" +#~ " [ OPTIONS ( option 'value' [, ... ] ) ]" #~ 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 ]" +#~ "CREATE SERVER nom [ TYPE 'typeserveur' ] [ VERSION 'versionserveur' ]\n" +#~ " FOREIGN DATA WRAPPER nomfdw\n" +#~ " [ OPTIONS ( option 'valeur' [, ... ] ) ]" -#~ msgid "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" +#~ msgid "" +#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n" +#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n" +#~ " [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" +#~ " [ OWNED BY { table.column | NONE } ]" #~ msgstr "" -#~ "CREATE TABLESPACE nom_tablespace [ OWNER nom_utilisateur ]\n" -#~ " LOCATION 'répertoire'" +#~ "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 CONFIGURATION name (\n" -#~ " PARSER = parser_name |\n" -#~ " COPY = source_config\n" -#~ ")" +#~ "CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ]\n" +#~ "CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]" #~ msgstr "" -#~ "CREATE TEXT SEARCH CONFIGURATION nom (\n" -#~ " PARSER = nom_analyseur |\n" -#~ " COPY = config_source\n" -#~ ")" +#~ "CREATE SCHEMA nom_schema [ AUTHORIZATION nom_utilisateur ]\n" +#~ " [ element_schema [ ... ] ]\n" +#~ "CREATE SCHEMA AUTHORIZATION nom_utilisateur [ element_schema [ ... ] ]" #~ msgid "" -#~ "CREATE TEXT SEARCH DICTIONARY name (\n" -#~ " TEMPLATE = template\n" -#~ " [, option = value [, ... ]]\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 DICTIONARY nom (\n" -#~ " TEMPLATE = modèle\n" -#~ " [, option = valeur [, ... ]]\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 PARSER name (\n" -#~ " START = start_function ,\n" -#~ " GETTOKEN = gettoken_function ,\n" -#~ " END = end_function ,\n" -#~ " LEXTYPES = lextypes_function\n" -#~ " [, HEADLINE = headline_function ]\n" -#~ ")" -#~ msgstr "" -#~ "CREATE TEXT SEARCH PARSER nom (\n" -#~ " START = fonction_debut ,\n" -#~ " GETTOKEN = fonction_jeton ,\n" -#~ " END = fonction_fin ,\n" -#~ " LEXTYPES = fonction_typeslexem\n" -#~ " [, HEADLINE = fonction_entete ]\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 TEXT SEARCH TEMPLATE name (\n" -#~ " [ INIT = init_function , ]\n" -#~ " LEXIZE = lexize_function\n" +#~ "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,7 +6667,7 @@ 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" #~ " \n" @@ -6771,7 +6677,6 @@ 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" @@ -6782,795 +6687,899 @@ msgstr "" #~ " | 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 }" - -#~ 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 ]" +#~ "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 FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -#~ " [ CASCADE | RESTRICT ]" +#~ "CREATE [ DEFAULT ] CONVERSION name\n" +#~ " FOR source_encoding TO dest_encoding FROM funcname" #~ 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 [DEFAULT] CONVERSION nom\n" +#~ " FOR codage_source TO codage_cible FROM nom_fonction" -#~ msgid "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | NONE } ) [ CASCADE | RESTRICT ]" +#~ 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 "" -#~ "DROP OPERATOR [IF EXISTS ] nom\n" -#~ " ( { type_gauche | NONE } , { type_droit | NONE } )\n" -#~ " [ 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 CLASS [ IF EXISTS ] name USING index_method [ 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 CLASS [IF EXISTS ] nom\n" -#~ " USING méthode_indexage [ 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 FAMILY [ 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 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 ]" - -#~ msgid "DROP USER [ IF EXISTS ] name [, ...]" -#~ msgstr "DROP USER [IF EXISTS ] nom [, ...]" - -#~ 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 VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP VIEW [IF EXISTS ] nom [, ...] [ 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 "END [ WORK | TRANSACTION ]" -#~ msgstr "END [ WORK | 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" +#~ "\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" +#~ "\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 "EXECUTE name [ ( parameter [, ...] ) ]" -#~ msgstr "EXECUTE nom_plan [ ( paramètre [, ...] ) ]" +#~ msgid "COMMIT PREPARED transaction_id" +#~ msgstr "COMMIT PREPARED id_transaction" -#~ msgid "EXPLAIN [ ANALYZE ] [ VERBOSE ] statement" -#~ msgstr "EXPLAIN [ ANALYZE ] [ VERBOSE ] instruction" +#~ msgid "COMMIT [ WORK | TRANSACTION ]" +#~ msgstr "COMMIT [ WORK | TRANSACTION ]" #~ msgid "" -#~ "FETCH [ direction { FROM | IN } ] cursorname\n" -#~ "\n" -#~ "where direction can be empty or one of:\n" -#~ "\n" -#~ " NEXT\n" -#~ " PRIOR\n" -#~ " FIRST\n" -#~ " LAST\n" -#~ " ABSOLUTE count\n" -#~ " RELATIVE count\n" -#~ " count\n" -#~ " ALL\n" -#~ " FORWARD\n" -#~ " FORWARD count\n" -#~ " FORWARD ALL\n" -#~ " BACKWARD\n" -#~ " BACKWARD count\n" -#~ " BACKWARD ALL" +#~ "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 "" -#~ "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" +#~ "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 "" +#~ "CLUSTER [VERBOSE] tablename [ USING indexname ]\n" +#~ "CLUSTER [VERBOSE]" +#~ msgstr "" +#~ "CLUSTER [VERBOSE] nom_table [ USING nom_index ]\n" +#~ "CLUSTER [VERBOSE]" + +#~ msgid "CLOSE { name | ALL }" +#~ msgstr "CLOSE { nom | ALL }" + +#~ msgid "CHECKPOINT" +#~ msgstr "CHECKPOINT" #~ 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" +#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" #~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON LANGUAGE langname [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "where transaction_mode is one of:\n" #~ "\n" -#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA schemaname [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" +#~ msgstr "" +#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" #~ "\n" -#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE tablespacename [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "où transaction_mode peut être :\n" #~ "\n" -#~ "GRANT role [, ...] TO rolename [, ...] [ WITH ADMIN OPTION ]" +#~ " 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 "" +#~ "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 "" -#~ "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" +#~ "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 "" +#~ "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 "" +#~ "ALTER USER name [ [ WITH ] 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" +#~ "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" -#~ "GRANT { { USAGE | SELECT | UPDATE }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SEQUENCE nom_séquence [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "ALTER USER name RENAME TO newname\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" +#~ "ALTER USER name SET configuration_parameter { TO | = } { value | DEFAULT }\n" +#~ "ALTER USER name SET configuration_parameter FROM CURRENT\n" +#~ "ALTER USER name RESET configuration_parameter\n" +#~ "ALTER USER name RESET ALL" +#~ msgstr "" +#~ "ALTER USER nom [ [ WITH ] option [ ... ] ]\n" #~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN DATA WRAPPER nomfdw [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\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" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN SERVER nom_serveur [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "ALTER USER nom RENAME TO nouveau_nom\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" +#~ "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 "" +#~ "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 "ALTER TRIGGER name ON table RENAME TO newname" +#~ msgstr "ALTER TRIGGER nom ON table RENAME TO nouveau_nom" + +#~ msgid "ALTER TEXT SEARCH TEMPLATE name RENAME TO newname" +#~ msgstr "ALTER TEXT SEARCH TEMPLATE nom RENAME TO nouveau_nom" + +#~ msgid "ALTER TEXT SEARCH PARSER name RENAME TO newname" +#~ msgstr "ALTER TEXT SEARCH PARSER nom RENAME TO nouveau_nom" + +#~ 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 "" +#~ "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 "" +#~ "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 "" +#~ "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" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON LANGUAGE nom_langage [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "where action is one of:\n" #~ "\n" -#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA nom_schéma [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\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" -#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE nom_tablespace [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "où action peut être :\n" #~ "\n" -#~ "GRANT rôle [, ...] TO nom_rôle [, ...] [ WITH ADMIN OPTION ]" +#~ " 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 "" -#~ "INSERT INTO table [ ( column [, ...] ) ]\n" -#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }\n" -#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" +#~ "ALTER SERVER servername [ VERSION 'newversion' ]\n" +#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]\n" +#~ "ALTER SERVER servername OWNER TO new_owner" #~ 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 SERVER nom [ VERSION 'nouvelleversion' ]\n" +#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ] ) ]\n" +#~ "ALTER SERVER nom OWNER TO nouveau_propriétaire" #~ msgid "" -#~ "LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n" -#~ "\n" -#~ "where lockmode is one of:\n" -#~ "\n" -#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" -#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" +#~ "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 "" -#~ "LOCK [ TABLE ] [ ONLY ] nom [, ...] [ IN mode_verrouillage MODE ] [ NOWAIT ]\n" -#~ "\n" -#~ "avec mode_verrouillage parmi :\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" - -#~ msgid "NOTIFY name" -#~ msgstr "NOTIFY nom" - -#~ msgid "PREPARE name [ ( datatype [, ...] ) ] AS statement" -#~ msgstr "PREPARE nom_plan [ ( type_données [, ...] ) ] AS instruction" - -#~ msgid "PREPARE TRANSACTION transaction_id" -#~ msgstr "PREPARE TRANSACTION id_transaction" - -#~ msgid "REASSIGN OWNED BY old_role [, ...] TO new_role" -#~ msgstr "REASSIGN OWNED BY ancien_role [, ...] TO nouveau_role" - -#~ msgid "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]" -#~ msgstr "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } nom [ FORCE ]" +#~ "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 "RELEASE [ SAVEPOINT ] savepoint_name" -#~ msgstr "RELEASE [ 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 "" -#~ "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" +#~ "ALTER ROLE name [ [ WITH ] option [ ... ] ]\n" #~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA schemaname [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\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" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE tablespacename [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" +#~ "ALTER ROLE name RENAME TO newname\n" #~ "\n" -#~ "REVOKE [ ADMIN OPTION FOR ]\n" -#~ " role [, ...] FROM rolename [, ...]\n" -#~ " [ CASCADE | RESTRICT ]" +#~ "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 "" -#~ "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" -#~ "\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" +#~ "ALTER ROLE nom [ [ WITH ] option [ ... ] ]\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" +#~ "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" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE nom_tablespace [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" +#~ "ALTER ROLE nom RENAME TO nouveau_nom\n" #~ "\n" -#~ "REVOKE [ ADMIN OPTION FOR ]\n" -#~ " role [, ...] FROM nom_rôle [, ...]\n" -#~ " [ CASCADE | RESTRICT ]" +#~ "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 "ROLLBACK [ WORK | TRANSACTION ]" -#~ msgstr "ROLLBACK [ WORK | TRANSACTION ]" +#~ msgid "" +#~ "ALTER OPERATOR FAMILY name USING index_method ADD\n" +#~ " { OPERATOR strategy_number operator_name ( op_type, op_type )\n" +#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n" +#~ " } [, ... ]\n" +#~ "ALTER OPERATOR FAMILY name USING index_method DROP\n" +#~ " { OPERATOR strategy_number ( op_type [ , op_type ] )\n" +#~ " | FUNCTION support_number ( op_type [ , op_type ] )\n" +#~ " } [, ... ]\n" +#~ "ALTER OPERATOR FAMILY name USING index_method RENAME TO newname\n" +#~ "ALTER OPERATOR FAMILY name USING index_method OWNER TO newowner" +#~ msgstr "" +#~ "ALTER OPERATOR FAMILY 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 "ROLLBACK PREPARED transaction_id" -#~ msgstr "ROLLBACK PREPARED id_transaction" +#~ msgid "" +#~ "ALTER OPERATOR CLASS name USING index_method RENAME TO newname\n" +#~ "ALTER OPERATOR CLASS name USING index_method OWNER TO newowner" +#~ msgstr "" +#~ "ALTER OPERATOR CLASS 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 "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name" -#~ msgstr "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] nom_retour" +#~ 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 "" -#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -#~ " * | expression [ [ AS ] output_name ] [, ...]\n" -#~ " [ FROM from_item [, ...] ]\n" -#~ " [ WHERE condition ]\n" -#~ " [ GROUP BY expression [, ...] ]\n" -#~ " [ HAVING condition [, ...] ]\n" -#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" -#~ " [ LIMIT { count | ALL } ]\n" -#~ " [ OFFSET start [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]\n" -#~ "\n" -#~ "where from_item can be one of:\n" -#~ "\n" -#~ " [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -#~ " ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n" -#~ " with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -#~ " function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]\n" -#~ " function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )\n" -#~ " from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]\n" -#~ "\n" -#~ "and with_query is:\n" -#~ "\n" -#~ " with_query_name [ ( column_name [, ...] ) ] AS ( select )\n" -#~ "\n" -#~ "TABLE { [ ONLY ] table_name [ * ] | with_query_name }" +#~ "ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" +#~ "ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" #~ 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" -#~ "\n" -#~ "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 }" +#~ "ALTER [ PROCEDURAL ] LANGUAGE nom RENAME TO nouveau_nom\n" +#~ "ALTER [ PROCEDURAL ] LANGUAGE nom OWNER TO nouveau_propriétaire" #~ 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 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 "" -#~ "[ 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 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 "" -#~ "SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }\n" -#~ "SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }" +#~ "ALTER GROUP groupname ADD USER username [, ... ]\n" +#~ "ALTER GROUP groupname DROP USER username [, ... ]\n" +#~ "\n" +#~ "ALTER GROUP groupname RENAME TO newname" #~ msgstr "" -#~ "SET [ SESSION | LOCAL ] paramètre { TO | = } { valeur | 'valeur' | DEFAULT }\n" -#~ "SET [ SESSION | LOCAL ] TIME ZONE { zone_horaire | LOCAL | DEFAULT }" +#~ "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 "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 "" -#~ "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/pt_BR.po b/src/bin/psql/po/pt_BR.po index 3ebe5aa0e2..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-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-10-25 16: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" @@ -120,22 +120,22 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu registro)" msgstr[1] "(%lu registros)" -#: ../../fe_utils/print.c:2906 +#: ../../fe_utils/print.c:2914 #, c-format msgid "Interrupted\n" msgstr "Interrompido\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 "Não pode adicionar cabeçalho a conteúdo de tabela: quantidade de colunas %d foi 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 "Não pode adicionar célula a conteúdo de tabela: quantidade total de células %d foi excedida.\n" -#: ../../fe_utils/print.c:3259 +#: ../../fe_utils/print.c:3267 #, c-format msgid "invalid output format (internal error): %d" msgstr "formato de saída inválido (erro interno): %d" @@ -216,7 +216,7 @@ msgstr "%s: nome da codificação é inválido ou procedimento de conversão 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" @@ -802,16 +802,16 @@ msgstr "cancelado pelo usuário" #: 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:671 msgid "aborted because of read failure" msgstr "interrompido devido a falha de leitura" -#: copy.c:695 +#: copy.c:705 msgid "trying to exit copy mode" msgstr "tentando sair do modo copy" @@ -840,22 +840,22 @@ msgstr "\\crosstabview: coluna de dados deve ser especificada quando consulta re msgid "\\crosstabview: maximum number of columns (%d) exceeded\n" msgstr "\\crosstabview: número máximo de colunas (%d) foi alcançado\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: resultado da consulta contém múltiplos valores de dados para registro \"%s\", coluna \"%s\"\n" -#: crosstabview.c:646 +#: 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:671 +#: crosstabview.c:672 #, c-format msgid "\\crosstabview: ambiguous column name: \"%s\"\n" msgstr "\\crosstabview: nome de coluna ambíguo: \"%s\"\n" -#: crosstabview.c:679 +#: crosstabview.c:680 #, c-format msgid "\\crosstabview: column name not found: \"%s\"\n" msgstr "\\crosstabview: nome de coluna não foi encontrado: \"%s\"\n" @@ -1401,6 +1401,16 @@ msgstr "Gatilhos sempre disparados:" msgid "Triggers firing on replica only:" msgstr "Gatilhos disparados somente na réplica:" +#: 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" @@ -3219,160 +3229,160 @@ msgstr "%s: sem memória\n" #: 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:626 -#: sql_help.c:628 sql_help.c:630 sql_help.c:633 sql_help.c:635 sql_help.c:637 -#: sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:698 sql_help.c:701 -#: sql_help.c:704 sql_help.c:733 sql_help.c:745 sql_help.c:753 sql_help.c:756 -#: sql_help.c:759 sql_help.c:774 sql_help.c:777 sql_help.c:821 sql_help.c:844 -#: sql_help.c:855 sql_help.c:857 sql_help.c:874 sql_help.c:883 sql_help.c:885 -#: sql_help.c:887 sql_help.c:899 sql_help.c:903 sql_help.c:905 sql_help.c:989 -#: sql_help.c:991 sql_help.c:994 sql_help.c:997 sql_help.c:999 sql_help.c:1001 -#: sql_help.c:1062 sql_help.c:1064 sql_help.c:1066 sql_help.c:1069 -#: sql_help.c:1090 sql_help.c:1093 sql_help.c:1096 sql_help.c:1099 -#: sql_help.c:1103 sql_help.c:1105 sql_help.c:1107 sql_help.c:1109 -#: sql_help.c:1123 sql_help.c:1126 sql_help.c:1128 sql_help.c:1130 -#: sql_help.c:1140 sql_help.c:1142 sql_help.c:1152 sql_help.c:1154 -#: sql_help.c:1164 sql_help.c:1167 sql_help.c:1188 sql_help.c:1190 -#: sql_help.c:1192 sql_help.c:1195 sql_help.c:1197 sql_help.c:1199 -#: sql_help.c:1249 sql_help.c:1287 sql_help.c:1290 sql_help.c:1292 -#: sql_help.c:1294 sql_help.c:1296 sql_help.c:1298 sql_help.c:1301 -#: sql_help.c:1341 sql_help.c:1546 sql_help.c:1610 sql_help.c:1629 -#: sql_help.c:1642 sql_help.c:1696 sql_help.c:1700 sql_help.c:1710 -#: sql_help.c:1730 sql_help.c:1755 sql_help.c:1773 sql_help.c:1802 -#: sql_help.c:1877 sql_help.c:1919 sql_help.c:1941 sql_help.c:1961 -#: sql_help.c:1962 sql_help.c:1997 sql_help.c:2017 sql_help.c:2039 -#: sql_help.c:2052 sql_help.c:2083 sql_help.c:2108 sql_help.c:2152 -#: sql_help.c:2338 sql_help.c:2351 sql_help.c:2368 sql_help.c:2384 -#: sql_help.c:2423 sql_help.c:2474 sql_help.c:2478 sql_help.c:2480 -#: sql_help.c:2486 sql_help.c:2504 sql_help.c:2531 sql_help.c:2566 -#: sql_help.c:2578 sql_help.c:2587 sql_help.c:2631 sql_help.c:2645 -#: sql_help.c:2673 sql_help.c:2681 sql_help.c:2689 sql_help.c:2697 -#: sql_help.c:2705 sql_help.c:2713 sql_help.c:2721 sql_help.c:2729 -#: sql_help.c:2738 sql_help.c:2749 sql_help.c:2757 sql_help.c:2765 -#: sql_help.c:2773 sql_help.c:2781 sql_help.c:2791 sql_help.c:2800 -#: sql_help.c:2809 sql_help.c:2817 sql_help.c:2826 sql_help.c:2834 -#: sql_help.c:2843 sql_help.c:2851 sql_help.c:2859 sql_help.c:2867 -#: sql_help.c:2875 sql_help.c:2883 sql_help.c:2891 sql_help.c:2899 -#: sql_help.c:2907 sql_help.c:2924 sql_help.c:2933 sql_help.c:2941 -#: sql_help.c:2958 sql_help.c:2973 sql_help.c:3238 sql_help.c:3289 -#: sql_help.c:3318 sql_help.c:3326 sql_help.c:3745 sql_help.c:3793 -#: sql_help.c:3934 +#: 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:37 sql_help.c:40 sql_help.c:43 sql_help.c:311 sql_help.c:1407 -#: sql_help.c:2646 sql_help.c:3541 +#: 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: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:634 sql_help.c:700 sql_help.c:755 -#: sql_help.c:776 sql_help.c:822 sql_help.c:846 sql_help.c:856 sql_help.c:886 -#: sql_help.c:906 sql_help.c:998 sql_help.c:1063 sql_help.c:1106 -#: sql_help.c:1127 sql_help.c:1141 sql_help.c:1153 sql_help.c:1166 -#: sql_help.c:1196 sql_help.c:1250 sql_help.c:1295 +#: 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: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:653 sql_help.c:674 sql_help.c:703 sql_help.c:758 -#: sql_help.c:858 sql_help.c:884 sql_help.c:904 sql_help.c:1047 -#: sql_help.c:1065 sql_help.c:1108 sql_help.c:1129 sql_help.c:1191 -#: sql_help.c:1293 sql_help.c:2324 +#: 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: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:636 sql_help.c:678 sql_help.c:706 -#: sql_help.c:761 sql_help.c:888 sql_help.c:1000 sql_help.c:1110 -#: sql_help.c:1131 sql_help.c:1143 sql_help.c:1155 sql_help.c:1198 -#: sql_help.c:1297 +#: 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:45 sql_help.c:1460 sql_help.c:2647 sql_help.c:3560 +#: 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: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:1425 sql_help.c:1461 -#: sql_help.c:1464 sql_help.c:1467 sql_help.c:1611 sql_help.c:1630 -#: sql_help.c:1633 sql_help.c:1878 sql_help.c:2648 sql_help.c:2651 -#: sql_help.c:2654 sql_help.c:2739 sql_help.c:3124 sql_help.c:3456 -#: sql_help.c:3547 sql_help.c:3561 sql_help.c:3564 sql_help.c:3567 +#: 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: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:1426 sql_help.c:1462 -#: sql_help.c:1465 sql_help.c:1468 sql_help.c:1612 sql_help.c:1631 -#: sql_help.c:1634 sql_help.c:1879 sql_help.c:2649 sql_help.c:2652 -#: sql_help.c:2655 sql_help.c:2740 sql_help.c:3548 sql_help.c:3562 -#: sql_help.c:3565 sql_help.c:3568 +#: 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: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:1427 sql_help.c:1463 -#: sql_help.c:1466 sql_help.c:1469 sql_help.c:1880 sql_help.c:2650 -#: sql_help.c:2653 sql_help.c:2656 sql_help.c:2741 sql_help.c:3549 -#: sql_help.c:3563 sql_help.c:3566 sql_help.c:3569 +#: 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:110 sql_help.c:370 sql_help.c:448 sql_help.c:460 sql_help.c:816 -#: sql_help.c:901 sql_help.c:1124 sql_help.c:1244 sql_help.c:1272 -#: sql_help.c:1517 sql_help.c:1523 sql_help.c:1805 sql_help.c:1837 -#: sql_help.c:1844 sql_help.c:1920 sql_help.c:2084 sql_help.c:2173 -#: sql_help.c:2353 sql_help.c:2532 sql_help.c:2554 sql_help.c:2992 -#: sql_help.c:3158 +#: 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:111 sql_help.c:817 sql_help.c:1245 sql_help.c:1921 -#: sql_help.c:2085 sql_help.c:2533 +#: 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:112 sql_help.c:1737 +#: sql_help.c:112 sql_help.c:1739 msgid "allowconn" msgstr "permite_conexão" -#: sql_help.c:113 sql_help.c:818 sql_help.c:1246 sql_help.c:1738 -#: sql_help.c:2086 sql_help.c:2534 +#: 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:114 sql_help.c:1739 +#: sql_help.c:114 sql_help.c:1741 msgid "istemplate" msgstr "é_modelo" -#: sql_help.c:120 sql_help.c:573 sql_help.c:639 sql_help.c:654 sql_help.c:1003 -#: sql_help.c:1040 +#: 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:122 sql_help.c:125 sql_help.c:127 sql_help.c:519 sql_help.c:521 -#: sql_help.c:522 sql_help.c:825 sql_help.c:829 sql_help.c:832 sql_help.c:917 -#: sql_help.c:920 sql_help.c:1252 sql_help.c:1255 sql_help.c:1257 -#: sql_help.c:1889 sql_help.c:3343 sql_help.c:3734 +#: 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: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:645 sql_help.c:651 sql_help.c:826 -#: sql_help.c:902 sql_help.c:918 sql_help.c:919 sql_help.c:1022 -#: sql_help.c:1042 sql_help.c:1068 sql_help.c:1125 sql_help.c:1253 -#: sql_help.c:1273 sql_help.c:1806 sql_help.c:1838 sql_help.c:1845 -#: sql_help.c:1890 sql_help.c:1891 sql_help.c:1949 sql_help.c:1981 -#: sql_help.c:2174 sql_help.c:2248 sql_help.c:2256 sql_help.c:2288 -#: sql_help.c:2310 sql_help.c:2327 sql_help.c:2354 sql_help.c:2555 -#: sql_help.c:3159 sql_help.c:3735 sql_help.c:3736 +#: 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" @@ -3380,9 +3390,9 @@ msgstr "valor" msgid "target_role" msgstr "role_alvo" -#: sql_help.c:186 sql_help.c:1789 sql_help.c:2132 sql_help.c:2137 -#: sql_help.c:3106 sql_help.c:3113 sql_help.c:3127 sql_help.c:3133 -#: sql_help.c:3438 sql_help.c:3445 sql_help.c:3459 sql_help.c:3465 +#: 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" @@ -3396,32 +3406,32 @@ msgstr "onde comando_grant_ou_revoke é um dos:" #: 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:638 sql_help.c:779 sql_help.c:836 sql_help.c:1002 -#: sql_help.c:1260 sql_help.c:1924 sql_help.c:1925 sql_help.c:1926 -#: sql_help.c:1927 sql_help.c:1928 sql_help.c:2054 sql_help.c:2089 -#: sql_help.c:2090 sql_help.c:2091 sql_help.c:2092 sql_help.c:2093 -#: sql_help.c:2537 sql_help.c:2538 sql_help.c:2539 sql_help.c:2540 -#: sql_help.c:2541 sql_help.c:3140 sql_help.c:3141 sql_help.c:3142 -#: sql_help.c:3439 sql_help.c:3443 sql_help.c:3446 sql_help.c:3448 -#: sql_help.c:3450 sql_help.c:3452 sql_help.c:3454 sql_help.c:3460 -#: sql_help.c:3462 sql_help.c:3464 sql_help.c:3466 sql_help.c:3468 -#: sql_help.c:3470 sql_help.c:3471 sql_help.c:3472 sql_help.c:3755 +#: 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:222 sql_help.c:436 sql_help.c:1013 sql_help.c:1015 -#: sql_help.c:1289 sql_help.c:1758 sql_help.c:1762 sql_help.c:1848 -#: sql_help.c:1852 sql_help.c:1945 sql_help.c:2260 sql_help.c:2270 -#: sql_help.c:2292 sql_help.c:3189 sql_help.c:3204 sql_help.c:3206 -#: sql_help.c:3620 sql_help.c:3621 sql_help.c:3630 sql_help.c:3671 -#: sql_help.c:3672 sql_help.c:3673 sql_help.c:3674 sql_help.c:3675 -#: sql_help.c:3676 sql_help.c:3709 sql_help.c:3710 sql_help.c:3715 -#: sql_help.c:3720 sql_help.c:3859 sql_help.c:3860 sql_help.c:3869 -#: sql_help.c:3910 sql_help.c:3911 sql_help.c:3912 sql_help.c:3913 -#: sql_help.c:3914 sql_help.c:3915 sql_help.c:3962 sql_help.c:3964 -#: sql_help.c:3997 sql_help.c:4053 sql_help.c:4054 sql_help.c:4063 -#: sql_help.c:4104 sql_help.c:4105 sql_help.c:4106 sql_help.c:4107 -#: sql_help.c:4108 sql_help.c:4109 +#: 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" @@ -3430,18 +3440,18 @@ msgid "domain_constraint" msgstr "restrição_domínio" #: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:451 sql_help.c:452 -#: sql_help.c:995 sql_help.c:1028 sql_help.c:1029 sql_help.c:1030 -#: sql_help.c:1050 sql_help.c:1413 sql_help.c:1415 sql_help.c:1761 -#: sql_help.c:1847 sql_help.c:1851 sql_help.c:2259 sql_help.c:2269 -#: sql_help.c:3201 +#: 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:230 sql_help.c:996 +#: sql_help.c:230 sql_help.c:994 msgid "new_constraint_name" msgstr "novo_nome_restrição" -#: sql_help.c:301 sql_help.c:900 +#: sql_help.c:301 sql_help.c:898 msgid "new_version" msgstr "nova_versão" @@ -3457,71 +3467,71 @@ msgstr "onde objeto_membro é:" #: 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:1405 sql_help.c:1410 sql_help.c:1417 -#: sql_help.c:1418 sql_help.c:1419 sql_help.c:1420 sql_help.c:1421 -#: sql_help.c:1422 sql_help.c:1423 sql_help.c:1428 sql_help.c:1430 -#: sql_help.c:1434 sql_help.c:1436 sql_help.c:1440 sql_help.c:1441 -#: 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:1451 -#: sql_help.c:1452 sql_help.c:1457 sql_help.c:1458 sql_help.c:3537 -#: sql_help.c:3542 sql_help.c:3543 sql_help.c:3544 sql_help.c:3545 -#: sql_help.c:3551 sql_help.c:3552 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: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:1406 sql_help.c:3540 +#: sql_help.c:310 sql_help.c:1408 sql_help.c:3542 msgid "aggregate_name" msgstr "nome_agregação" -#: sql_help.c:312 sql_help.c:1408 sql_help.c:1676 sql_help.c:1680 -#: sql_help.c:1682 sql_help.c:2664 +#: 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:313 sql_help.c:1409 sql_help.c:1677 sql_help.c:1681 -#: sql_help.c:1683 sql_help.c:2665 +#: 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:320 sql_help.c:743 sql_help.c:1424 sql_help.c:1678 -#: sql_help.c:1713 sql_help.c:1776 sql_help.c:1998 sql_help.c:2029 -#: sql_help.c:2428 sql_help.c:3123 sql_help.c:3455 sql_help.c:3546 -#: sql_help.c:3649 sql_help.c:3653 sql_help.c:3657 sql_help.c:3660 -#: sql_help.c:3888 sql_help.c:3892 sql_help.c:3896 sql_help.c:3899 -#: sql_help.c:4082 sql_help.c:4086 sql_help.c:4090 sql_help.c:4093 +#: 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:325 sql_help.c:736 sql_help.c:1431 sql_help.c:2022 +#: 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:326 sql_help.c:672 sql_help.c:676 sql_help.c:680 sql_help.c:1432 -#: sql_help.c:1999 sql_help.c:2782 +#: 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:327 sql_help.c:673 sql_help.c:677 sql_help.c:681 sql_help.c:1433 -#: sql_help.c:2000 sql_help.c:2783 +#: 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:329 sql_help.c:331 sql_help.c:699 sql_help.c:702 sql_help.c:705 -#: sql_help.c:734 sql_help.c:746 sql_help.c:754 sql_help.c:757 sql_help.c:760 -#: sql_help.c:1435 sql_help.c:1437 sql_help.c:2019 sql_help.c:2040 -#: sql_help.c:2275 sql_help.c:2792 sql_help.c:2801 +#: 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:341 sql_help.c:1046 sql_help.c:1453 sql_help.c:1886 -#: sql_help.c:2251 sql_help.c:2397 sql_help.c:2915 sql_help.c:3137 -#: sql_help.c:3469 +#: 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:342 sql_help.c:1454 sql_help.c:1885 sql_help.c:2398 -#: sql_help.c:2622 sql_help.c:2916 sql_help.c:3129 sql_help.c:3461 +#: 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" @@ -3529,120 +3539,120 @@ msgstr "nome_linguagem" msgid "and aggregate_signature is:" msgstr "e assinatura_agregação é:" -#: sql_help.c:368 sql_help.c:1548 sql_help.c:1803 +#: sql_help.c:368 sql_help.c:1550 sql_help.c:1805 msgid "handler_function" msgstr "função_manipulação" -#: sql_help.c:369 sql_help.c:1804 +#: sql_help.c:369 sql_help.c:1806 msgid "validator_function" msgstr "função_validação" -#: sql_help.c:418 sql_help.c:495 sql_help.c:627 sql_help.c:990 sql_help.c:1189 -#: sql_help.c:2266 sql_help.c:2267 sql_help.c:2283 sql_help.c:2284 +#: 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: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:631 sql_help.c:641 sql_help.c:643 -#: sql_help.c:646 sql_help.c:648 sql_help.c:882 sql_help.c:992 sql_help.c:1005 -#: sql_help.c:1009 sql_help.c:1010 sql_help.c:1014 sql_help.c:1016 -#: sql_help.c:1017 sql_help.c:1018 sql_help.c:1020 sql_help.c:1023 -#: sql_help.c:1025 sql_help.c:1288 sql_help.c:1291 sql_help.c:1311 -#: sql_help.c:1412 sql_help.c:1514 sql_help.c:1519 sql_help.c:1533 -#: sql_help.c:1534 sql_help.c:1535 sql_help.c:1835 sql_help.c:1883 -#: sql_help.c:1944 sql_help.c:1979 sql_help.c:2159 sql_help.c:2239 -#: sql_help.c:2252 sql_help.c:2271 sql_help.c:2273 sql_help.c:2280 -#: sql_help.c:2291 sql_help.c:2308 sql_help.c:2431 sql_help.c:2567 -#: sql_help.c:3108 sql_help.c:3109 sql_help.c:3188 sql_help.c:3203 -#: sql_help.c:3205 sql_help.c:3207 sql_help.c:3440 sql_help.c:3441 -#: sql_help.c:3539 sql_help.c:3680 sql_help.c:3919 sql_help.c:3961 -#: sql_help.c:3963 sql_help.c:3965 sql_help.c:3982 sql_help.c:3985 -#: sql_help.c:4113 +#: 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:421 sql_help.c:632 sql_help.c:993 +#: sql_help.c:421 sql_help.c:631 sql_help.c:991 msgid "new_column_name" msgstr "novo_nome_coluna" -#: sql_help.c:426 sql_help.c:516 sql_help.c:640 sql_help.c:1004 -#: sql_help.c:1202 +#: 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:428 sql_help.c:433 sql_help.c:1006 sql_help.c:1011 -#: sql_help.c:1204 sql_help.c:1208 sql_help.c:1756 sql_help.c:1836 -#: sql_help.c:2018 sql_help.c:2240 sql_help.c:2476 sql_help.c:3290 +#: 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:429 sql_help.c:434 sql_help.c:1007 sql_help.c:1012 -#: sql_help.c:1205 sql_help.c:1209 sql_help.c:1757 sql_help.c:1839 -#: sql_help.c:1946 sql_help.c:2241 sql_help.c:2477 sql_help.c:2483 -#: sql_help.c:3198 +#: 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:430 sql_help.c:1008 sql_help.c:1840 sql_help.c:2242 -#: sql_help.c:2253 +#: 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:440 sql_help.c:642 sql_help.c:1019 +#: sql_help.c:440 sql_help.c:641 sql_help.c:1017 msgid "integer" msgstr "inteiro" -#: sql_help.c:442 sql_help.c:445 sql_help.c:644 sql_help.c:647 sql_help.c:1021 -#: sql_help.c:1024 +#: 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:450 sql_help.c:1026 sql_help.c:1841 sql_help.c:2243 -#: sql_help.c:2254 +#: 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:453 sql_help.c:454 sql_help.c:455 sql_help.c:456 sql_help.c:1031 -#: sql_help.c:1032 sql_help.c:1033 sql_help.c:1034 sql_help.c:1455 +#: 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:457 sql_help.c:458 sql_help.c:1044 sql_help.c:1045 -#: sql_help.c:1842 sql_help.c:2246 +#: 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:515 sql_help.c:565 sql_help.c:629 sql_help.c:1169 -#: sql_help.c:1788 +#: 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:1887 +#: sql_help.c:517 sql_help.c:1889 msgid "execution_cost" msgstr "custo_execução" -#: sql_help.c:518 sql_help.c:1888 +#: sql_help.c:518 sql_help.c:1890 msgid "result_rows" msgstr "registros_retornados" -#: sql_help.c:539 sql_help.c:541 sql_help.c:815 sql_help.c:823 sql_help.c:827 -#: sql_help.c:830 sql_help.c:833 sql_help.c:1243 sql_help.c:1251 -#: sql_help.c:1254 sql_help.c:1256 sql_help.c:1258 sql_help.c:2133 -#: sql_help.c:2135 sql_help.c:2138 sql_help.c:2139 sql_help.c:3107 -#: sql_help.c:3111 sql_help.c:3114 sql_help.c:3116 sql_help.c:3118 -#: sql_help.c:3120 sql_help.c:3122 sql_help.c:3128 sql_help.c:3130 -#: sql_help.c:3132 sql_help.c:3134 sql_help.c:3136 sql_help.c:3138 +#: 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:540 sql_help.c:542 sql_help.c:1270 sql_help.c:1731 -#: sql_help.c:2141 sql_help.c:2552 sql_help.c:2949 sql_help.c:3765 +#: 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:543 sql_help.c:835 sql_help.c:1259 sql_help.c:2140 -#: sql_help.c:3139 +#: 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:" @@ -3650,1581 +3660,1582 @@ msgstr "onde especificação_role pode ser:" msgid "group_name" msgstr "nome_grupo" -#: sql_help.c:563 sql_help.c:1736 sql_help.c:1950 sql_help.c:1982 -#: sql_help.c:2249 sql_help.c:2257 sql_help.c:2289 sql_help.c:2311 -#: sql_help.c:2323 sql_help.c:3135 sql_help.c:3467 +#: 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:567 sql_help.c:570 sql_help.c:650 sql_help.c:652 sql_help.c:1041 -#: sql_help.c:1043 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: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:593 sql_help.c:1429 sql_help.c:3550 +#: sql_help.c:593 sql_help.c:1431 sql_help.c:3552 msgid "large_object_oid" msgstr "oid_objeto_grande" -#: sql_help.c:649 sql_help.c:1039 sql_help.c:1048 sql_help.c:1051 -#: sql_help.c:1351 +#: 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:682 sql_help.c:2003 +#: sql_help.c:680 sql_help.c:2005 msgid "res_proc" msgstr "proc_restrição" -#: sql_help.c:683 sql_help.c:2004 +#: sql_help.c:681 sql_help.c:2006 msgid "join_proc" msgstr "proc_junção" -#: sql_help.c:735 sql_help.c:747 sql_help.c:2021 +#: sql_help.c:733 sql_help.c:745 sql_help.c:2023 msgid "strategy_number" msgstr "número_estratégia" -#: sql_help.c:737 sql_help.c:738 sql_help.c:741 sql_help.c:742 sql_help.c:748 -#: sql_help.c:749 sql_help.c:751 sql_help.c:752 sql_help.c:2023 -#: sql_help.c:2024 sql_help.c:2027 sql_help.c:2028 +#: 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:739 sql_help.c:2025 +#: sql_help.c:737 sql_help.c:2027 msgid "sort_family_name" msgstr "nome_família_ordenação" -#: sql_help.c:740 sql_help.c:750 sql_help.c:2026 +#: sql_help.c:738 sql_help.c:748 sql_help.c:2028 msgid "support_number" msgstr "número_suporte" -#: sql_help.c:744 sql_help.c:1679 sql_help.c:2030 sql_help.c:2400 -#: sql_help.c:2402 +#: 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:775 sql_help.c:778 sql_help.c:845 sql_help.c:881 sql_help.c:1165 -#: sql_help.c:1168 sql_help.c:1310 sql_help.c:1350 sql_help.c:1414 -#: sql_help.c:1439 sql_help.c:1443 sql_help.c:1456 sql_help.c:1513 -#: sql_help.c:1518 sql_help.c:1834 sql_help.c:1942 sql_help.c:1978 -#: sql_help.c:2053 sql_help.c:2110 sql_help.c:2158 sql_help.c:2238 -#: sql_help.c:2250 sql_help.c:2307 sql_help.c:2425 sql_help.c:2601 -#: sql_help.c:2818 sql_help.c:2835 sql_help.c:2925 sql_help.c:3105 -#: sql_help.c:3110 sql_help.c:3155 sql_help.c:3186 sql_help.c:3437 -#: sql_help.c:3442 sql_help.c:3538 sql_help.c:3635 sql_help.c:3637 -#: sql_help.c:3686 sql_help.c:3725 sql_help.c:3874 sql_help.c:3876 -#: sql_help.c:3925 sql_help.c:3959 sql_help.c:3981 sql_help.c:3983 -#: sql_help.c:3984 sql_help.c:4068 sql_help.c:4070 sql_help.c:4119 +#: 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:780 sql_help.c:2055 +#: sql_help.c:778 sql_help.c:2057 msgid "using_expression" msgstr "expressão_using" -#: sql_help.c:781 sql_help.c:2056 +#: sql_help.c:779 sql_help.c:2058 msgid "check_expression" msgstr "expressão_check" -#: sql_help.c:819 sql_help.c:1247 sql_help.c:1922 sql_help.c:2087 -#: sql_help.c:2535 +#: 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:820 sql_help.c:1248 sql_help.c:1923 sql_help.c:2088 -#: sql_help.c:2536 +#: 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:824 sql_help.c:828 sql_help.c:831 sql_help.c:834 sql_help.c:3115 -#: sql_help.c:3447 +#: 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:875 sql_help.c:2153 +#: sql_help.c:873 sql_help.c:2155 msgid "increment" msgstr "incremento" -#: sql_help.c:876 sql_help.c:2154 +#: sql_help.c:874 sql_help.c:2156 msgid "minvalue" msgstr "valor_mínimo" -#: sql_help.c:877 sql_help.c:2155 +#: sql_help.c:875 sql_help.c:2157 msgid "maxvalue" msgstr "valor_máximo" -#: sql_help.c:878 sql_help.c:2156 sql_help.c:3633 sql_help.c:3723 -#: sql_help.c:3872 sql_help.c:4001 sql_help.c:4066 +#: 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:879 +#: sql_help.c:877 msgid "restart" msgstr "reinício" -#: sql_help.c:880 sql_help.c:2157 +#: sql_help.c:878 sql_help.c:2159 msgid "cache" msgstr "cache" -#: sql_help.c:1027 +#: sql_help.c:1025 msgid "table_constraint_using_index" msgstr "restrição_tabela_utilizando_índice" -#: sql_help.c:1035 sql_help.c:1036 sql_help.c:1037 sql_help.c:1038 +#: 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:1049 +#: sql_help.c:1047 msgid "and table_constraint_using_index is:" msgstr "e restrição_tabela_utilizando_índice é:" -#: sql_help.c:1067 sql_help.c:1070 sql_help.c:2326 +#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2328 msgid "tablespace_option" msgstr "opção_tablespace" -#: sql_help.c:1091 sql_help.c:1094 sql_help.c:1100 sql_help.c:1104 +#: 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:1092 sql_help.c:1095 +#: sql_help.c:1090 sql_help.c:1093 msgid "dictionary_name" msgstr "nome_dicionário" -#: sql_help.c:1097 sql_help.c:1101 +#: sql_help.c:1095 sql_help.c:1099 msgid "old_dictionary" msgstr "dicionário_antigo" -#: sql_help.c:1098 sql_help.c:1102 +#: sql_help.c:1096 sql_help.c:1100 msgid "new_dictionary" msgstr "novo_dicionário" -#: sql_help.c:1193 sql_help.c:1203 sql_help.c:1206 sql_help.c:1207 -#: sql_help.c:2475 +#: 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:1194 +#: sql_help.c:1192 msgid "new_attribute_name" msgstr "novo_nome_atributo" -#: sql_help.c:1200 +#: sql_help.c:1198 msgid "new_enum_value" msgstr "novo_valor_enum" -#: sql_help.c:1201 +#: sql_help.c:1199 msgid "existing_enum_value" msgstr "valor_enum_existente" -#: sql_help.c:1271 sql_help.c:1843 sql_help.c:2169 sql_help.c:2553 -#: sql_help.c:2950 sql_help.c:3121 sql_help.c:3156 sql_help.c:3453 +#: 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:1299 sql_help.c:1302 sql_help.c:2568 +#: 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:1300 sql_help.c:2569 +#: sql_help.c:1302 sql_help.c:2571 msgid "view_option_value" msgstr "valor_opção_visão" -#: sql_help.c:1325 sql_help.c:3781 sql_help.c:3783 sql_help.c:3807 +#: 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:1326 sql_help.c:3784 sql_help.c:3808 +#: 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:1411 +#: sql_help.c:1413 msgid "relation_name" msgstr "nome_relação" -#: sql_help.c:1416 sql_help.c:3117 sql_help.c:3449 +#: sql_help.c:1418 sql_help.c:3119 sql_help.c:3451 msgid "domain_name" msgstr "nome_domínio" -#: sql_help.c:1438 +#: sql_help.c:1440 msgid "policy_name" msgstr "nome_política" -#: sql_help.c:1442 +#: sql_help.c:1444 msgid "rule_name" msgstr "nome_regra" -#: sql_help.c:1459 +#: sql_help.c:1461 msgid "text" msgstr "texto" -#: sql_help.c:1484 sql_help.c:3299 sql_help.c:3487 +#: sql_help.c:1486 sql_help.c:3301 sql_help.c:3489 msgid "transaction_id" msgstr "id_transação" -#: sql_help.c:1515 sql_help.c:1521 sql_help.c:3225 +#: sql_help.c:1517 sql_help.c:1523 sql_help.c:3227 msgid "filename" msgstr "arquivo" -#: sql_help.c:1516 sql_help.c:1522 sql_help.c:2112 sql_help.c:2113 -#: sql_help.c:2114 +#: 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:1520 sql_help.c:1983 sql_help.c:2312 sql_help.c:2570 -#: sql_help.c:2588 sql_help.c:3190 +#: 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:1524 sql_help.c:2995 +#: 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:1525 +#: sql_help.c:1527 msgid "format_name" msgstr "nome_formato" -#: sql_help.c:1526 sql_help.c:1527 sql_help.c:1530 sql_help.c:2996 -#: sql_help.c:2997 sql_help.c:2998 sql_help.c:2999 sql_help.c:3000 +#: 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:1528 +#: sql_help.c:1530 msgid "delimiter_character" msgstr "caracter_delimitador" -#: sql_help.c:1529 +#: sql_help.c:1531 msgid "null_string" msgstr "cadeia_nula" -#: sql_help.c:1531 +#: sql_help.c:1533 msgid "quote_character" msgstr "caracter_separador" -#: sql_help.c:1532 +#: sql_help.c:1534 msgid "escape_character" msgstr "caracter_escape" -#: sql_help.c:1536 +#: sql_help.c:1538 msgid "encoding_name" msgstr "nome_codificação" -#: sql_help.c:1547 +#: sql_help.c:1549 msgid "access_method_type" msgstr "tipo_método_acesso" -#: sql_help.c:1613 sql_help.c:1632 sql_help.c:1635 +#: sql_help.c:1615 sql_help.c:1634 sql_help.c:1637 msgid "arg_data_type" msgstr "tipo_de_dado_arg" -#: sql_help.c:1614 sql_help.c:1636 sql_help.c:1644 +#: sql_help.c:1616 sql_help.c:1638 sql_help.c:1646 msgid "sfunc" msgstr "função_trans_estado" -#: sql_help.c:1615 sql_help.c:1637 sql_help.c:1645 +#: sql_help.c:1617 sql_help.c:1639 sql_help.c:1647 msgid "state_data_type" msgstr "tipo_de_dado_estado" -#: sql_help.c:1616 sql_help.c:1638 sql_help.c:1646 +#: sql_help.c:1618 sql_help.c:1640 sql_help.c:1648 msgid "state_data_size" msgstr "tamanho_de_dado_estado" -#: sql_help.c:1617 sql_help.c:1639 sql_help.c:1647 +#: sql_help.c:1619 sql_help.c:1641 sql_help.c:1649 msgid "ffunc" msgstr "função_final" -#: sql_help.c:1618 sql_help.c:1648 +#: sql_help.c:1620 sql_help.c:1650 msgid "combinefunc" msgstr "função_combine" -#: sql_help.c:1619 sql_help.c:1649 +#: sql_help.c:1621 sql_help.c:1651 msgid "serialfunc" msgstr "função_serial" -#: sql_help.c:1620 sql_help.c:1650 +#: sql_help.c:1622 sql_help.c:1652 msgid "deserialfunc" msgstr "função_deserial" -#: sql_help.c:1621 sql_help.c:1640 sql_help.c:1651 +#: sql_help.c:1623 sql_help.c:1642 sql_help.c:1653 msgid "initial_condition" msgstr "condição_inicial" -#: sql_help.c:1622 sql_help.c:1652 +#: sql_help.c:1624 sql_help.c:1654 msgid "msfunc" msgstr "função_mestado" -#: sql_help.c:1623 sql_help.c:1653 +#: sql_help.c:1625 sql_help.c:1655 msgid "minvfunc" msgstr "função_minv" -#: sql_help.c:1624 sql_help.c:1654 +#: sql_help.c:1626 sql_help.c:1656 msgid "mstate_data_type" msgstr "tipo_de_dado_mestado" -#: sql_help.c:1625 sql_help.c:1655 +#: sql_help.c:1627 sql_help.c:1657 msgid "mstate_data_size" msgstr "tamanho_de_dado_mestado" -#: sql_help.c:1626 sql_help.c:1656 +#: sql_help.c:1628 sql_help.c:1658 msgid "mffunc" msgstr "função_mfinal" -#: sql_help.c:1627 sql_help.c:1657 +#: sql_help.c:1629 sql_help.c:1659 msgid "minitial_condition" msgstr "condição_minicial" -#: sql_help.c:1628 sql_help.c:1658 +#: sql_help.c:1630 sql_help.c:1660 msgid "sort_operator" msgstr "operador_ordenação" -#: sql_help.c:1641 +#: sql_help.c:1643 msgid "or the old syntax" msgstr "ou a sintaxe antiga" -#: sql_help.c:1643 +#: sql_help.c:1645 msgid "base_type" msgstr "tipo_base" -#: sql_help.c:1697 +#: sql_help.c:1699 msgid "locale" msgstr "configuração regional" -#: sql_help.c:1698 sql_help.c:1734 +#: sql_help.c:1700 sql_help.c:1736 msgid "lc_collate" msgstr "lc_collate" -#: sql_help.c:1699 sql_help.c:1735 +#: sql_help.c:1701 sql_help.c:1737 msgid "lc_ctype" msgstr "lc_ctype" -#: sql_help.c:1701 +#: sql_help.c:1703 msgid "existing_collation" msgstr "ordenação_existente" -#: sql_help.c:1711 +#: sql_help.c:1713 msgid "source_encoding" msgstr "codificação_origem" -#: sql_help.c:1712 +#: sql_help.c:1714 msgid "dest_encoding" msgstr "codificação_destino" -#: sql_help.c:1732 sql_help.c:2352 +#: sql_help.c:1734 sql_help.c:2354 msgid "template" msgstr "modelo" -#: sql_help.c:1733 +#: sql_help.c:1735 msgid "encoding" msgstr "codificação" -#: sql_help.c:1759 +#: sql_help.c:1761 msgid "constraint" msgstr "restrição" -#: sql_help.c:1760 +#: sql_help.c:1762 msgid "where constraint is:" msgstr "onde restrição é:" -#: sql_help.c:1774 sql_help.c:2109 sql_help.c:2424 +#: sql_help.c:1776 sql_help.c:2111 sql_help.c:2426 msgid "event" msgstr "evento" -#: sql_help.c:1775 +#: sql_help.c:1777 msgid "filter_variable" msgstr "variável_filtro" -#: sql_help.c:1790 +#: sql_help.c:1792 msgid "version" msgstr "versão" -#: sql_help.c:1791 +#: sql_help.c:1793 msgid "old_version" msgstr "versão_antiga" -#: sql_help.c:1846 sql_help.c:2258 +#: sql_help.c:1848 sql_help.c:2260 msgid "where column_constraint is:" msgstr "onde restrição_coluna é:" -#: sql_help.c:1849 sql_help.c:1881 sql_help.c:2261 +#: sql_help.c:1851 sql_help.c:1883 sql_help.c:2263 msgid "default_expr" msgstr "expressão_padrão" -#: sql_help.c:1850 sql_help.c:2268 +#: sql_help.c:1852 sql_help.c:2270 msgid "and table_constraint is:" msgstr "e restrição_tabela é:" -#: sql_help.c:1882 +#: sql_help.c:1884 msgid "rettype" msgstr "tipo_retorno" -#: sql_help.c:1884 +#: sql_help.c:1886 msgid "column_type" msgstr "tipo_coluna" -#: sql_help.c:1892 +#: sql_help.c:1894 msgid "definition" msgstr "definição" -#: sql_help.c:1893 +#: sql_help.c:1895 msgid "obj_file" msgstr "arquivo_objeto" -#: sql_help.c:1894 +#: sql_help.c:1896 msgid "link_symbol" msgstr "símbolo_ligação" -#: sql_help.c:1895 +#: sql_help.c:1897 msgid "attribute" msgstr "atributo" -#: sql_help.c:1929 sql_help.c:2094 sql_help.c:2542 +#: sql_help.c:1931 sql_help.c:2096 sql_help.c:2544 msgid "uid" msgstr "uid" -#: sql_help.c:1943 +#: sql_help.c:1945 msgid "method" msgstr "método" -#: sql_help.c:1947 sql_help.c:2293 sql_help.c:3199 +#: sql_help.c:1949 sql_help.c:2295 sql_help.c:3201 msgid "opclass" msgstr "classe_operadores" -#: sql_help.c:1951 sql_help.c:2279 +#: sql_help.c:1953 sql_help.c:2281 msgid "predicate" msgstr "predicado" -#: sql_help.c:1963 +#: sql_help.c:1965 msgid "call_handler" msgstr "manipulador_chamada" -#: sql_help.c:1964 +#: sql_help.c:1966 msgid "inline_handler" msgstr "manipulador_em_linha" -#: sql_help.c:1965 +#: sql_help.c:1967 msgid "valfunction" msgstr "função_validação" -#: sql_help.c:2001 +#: sql_help.c:2003 msgid "com_op" msgstr "operador_comutação" -#: sql_help.c:2002 +#: sql_help.c:2004 msgid "neg_op" msgstr "operador_negação" -#: sql_help.c:2020 +#: sql_help.c:2022 msgid "family_name" msgstr "nome_família" -#: sql_help.c:2031 +#: sql_help.c:2033 msgid "storage_type" msgstr "tipo_armazenamento" -#: sql_help.c:2111 sql_help.c:2427 sql_help.c:2604 sql_help.c:3209 -#: sql_help.c:3624 sql_help.c:3626 sql_help.c:3714 sql_help.c:3716 -#: sql_help.c:3863 sql_help.c:3865 sql_help.c:3968 sql_help.c:4057 -#: sql_help.c:4059 +#: 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:2115 sql_help.c:2430 +#: 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:2134 sql_help.c:2136 +#: sql_help.c:2136 sql_help.c:2138 msgid "schema_element" msgstr "elemento_esquema" -#: sql_help.c:2170 +#: sql_help.c:2172 msgid "server_type" msgstr "tipo_servidor" -#: sql_help.c:2171 +#: sql_help.c:2173 msgid "server_version" msgstr "versão_servidor" -#: sql_help.c:2172 sql_help.c:3119 sql_help.c:3451 +#: sql_help.c:2174 sql_help.c:3121 sql_help.c:3453 msgid "fdw_name" msgstr "nome_fdw" -#: sql_help.c:2244 +#: sql_help.c:2246 msgid "source_table" msgstr "tabela_origem" -#: sql_help.c:2245 +#: sql_help.c:2247 msgid "like_option" msgstr "opção_like" -#: sql_help.c:2262 sql_help.c:2263 sql_help.c:2272 sql_help.c:2274 -#: sql_help.c:2278 +#: 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:2264 sql_help.c:2281 +#: sql_help.c:2266 sql_help.c:2283 msgid "reftable" msgstr "tabela_ref" -#: sql_help.c:2265 sql_help.c:2282 +#: sql_help.c:2267 sql_help.c:2284 msgid "refcolumn" msgstr "coluna_ref" -#: sql_help.c:2276 +#: sql_help.c:2278 msgid "exclude_element" msgstr "elemento_exclusão" -#: sql_help.c:2277 sql_help.c:3631 sql_help.c:3721 sql_help.c:3870 -#: sql_help.c:3999 sql_help.c:4064 +#: 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:2285 +#: sql_help.c:2287 msgid "and like_option is:" msgstr "e opção_like é:" -#: sql_help.c:2286 +#: 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:2290 +#: sql_help.c:2292 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "elemento_exclusão em uma restrição EXCLUDE é:" -#: sql_help.c:2325 +#: sql_help.c:2327 msgid "directory" msgstr "diretório" -#: sql_help.c:2339 +#: sql_help.c:2341 msgid "parser_name" msgstr "nome_analisador" -#: sql_help.c:2340 +#: sql_help.c:2342 msgid "source_config" msgstr "configuração_origem" -#: sql_help.c:2369 +#: sql_help.c:2371 msgid "start_function" msgstr "função_início" -#: sql_help.c:2370 +#: sql_help.c:2372 msgid "gettoken_function" msgstr "função_gettoken" -#: sql_help.c:2371 +#: sql_help.c:2373 msgid "end_function" msgstr "função_fim" -#: sql_help.c:2372 +#: sql_help.c:2374 msgid "lextypes_function" msgstr "função_lextypes" -#: sql_help.c:2373 +#: sql_help.c:2375 msgid "headline_function" msgstr "função_headline" -#: sql_help.c:2385 +#: sql_help.c:2387 msgid "init_function" msgstr "função_init" -#: sql_help.c:2386 +#: sql_help.c:2388 msgid "lexize_function" msgstr "função_lexize" -#: sql_help.c:2399 +#: sql_help.c:2401 msgid "from_sql_function_name" msgstr "nome_função_do_sql" -#: sql_help.c:2401 +#: sql_help.c:2403 msgid "to_sql_function_name" msgstr "nome_função_para_sql" -#: sql_help.c:2426 +#: sql_help.c:2428 msgid "referenced_table_name" msgstr "nome_tabela_referenciada" -#: sql_help.c:2429 +#: sql_help.c:2431 msgid "arguments" msgstr "argumentos" -#: sql_help.c:2479 sql_help.c:3559 +#: sql_help.c:2481 sql_help.c:3561 msgid "label" msgstr "rótulo" -#: sql_help.c:2481 +#: sql_help.c:2483 msgid "subtype" msgstr "subtipo" -#: sql_help.c:2482 +#: sql_help.c:2484 msgid "subtype_operator_class" msgstr "classe_operadores_subtipo" -#: sql_help.c:2484 +#: sql_help.c:2486 msgid "canonical_function" msgstr "função_canônica" -#: sql_help.c:2485 +#: sql_help.c:2487 msgid "subtype_diff_function" msgstr "função_diff_subtipo" -#: sql_help.c:2487 +#: sql_help.c:2489 msgid "input_function" msgstr "função_entrada" -#: sql_help.c:2488 +#: sql_help.c:2490 msgid "output_function" msgstr "função_saída" -#: sql_help.c:2489 +#: sql_help.c:2491 msgid "receive_function" msgstr "função_recepção" -#: sql_help.c:2490 +#: sql_help.c:2492 msgid "send_function" msgstr "função_envio" -#: sql_help.c:2491 +#: sql_help.c:2493 msgid "type_modifier_input_function" msgstr "função_entrada_modificador_tipo" -#: sql_help.c:2492 +#: sql_help.c:2494 msgid "type_modifier_output_function" msgstr "função_saída_modificador_tipo" -#: sql_help.c:2493 +#: sql_help.c:2495 msgid "analyze_function" msgstr "função_análise" -#: sql_help.c:2494 +#: sql_help.c:2496 msgid "internallength" msgstr "tamanho_interno" -#: sql_help.c:2495 +#: sql_help.c:2497 msgid "alignment" msgstr "alinhamento" -#: sql_help.c:2496 +#: sql_help.c:2498 msgid "storage" msgstr "armazenamento" -#: sql_help.c:2497 +#: sql_help.c:2499 msgid "like_type" msgstr "tipo_like" -#: sql_help.c:2498 +#: sql_help.c:2500 msgid "category" msgstr "categoria" -#: sql_help.c:2499 +#: sql_help.c:2501 msgid "preferred" msgstr "tipo_preferido" -#: sql_help.c:2500 +#: sql_help.c:2502 msgid "default" msgstr "valor_padrão" -#: sql_help.c:2501 +#: sql_help.c:2503 msgid "element" msgstr "elemento" -#: sql_help.c:2502 +#: sql_help.c:2504 msgid "delimiter" msgstr "delimitador" -#: sql_help.c:2503 +#: sql_help.c:2505 msgid "collatable" msgstr "collatable" -#: sql_help.c:2600 sql_help.c:3185 sql_help.c:3619 sql_help.c:3708 -#: sql_help.c:3858 sql_help.c:3958 sql_help.c:4052 +#: 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:2602 sql_help.c:3187 sql_help.c:3638 sql_help.c:3644 -#: sql_help.c:3647 sql_help.c:3651 sql_help.c:3655 sql_help.c:3663 -#: sql_help.c:3877 sql_help.c:3883 sql_help.c:3886 sql_help.c:3890 -#: sql_help.c:3894 sql_help.c:3902 sql_help.c:3960 sql_help.c:4071 -#: sql_help.c:4077 sql_help.c:4080 sql_help.c:4084 sql_help.c:4088 -#: sql_help.c:4096 +#: 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:2603 +#: sql_help.c:2605 msgid "using_list" msgstr "lista_using" -#: sql_help.c:2605 sql_help.c:3026 sql_help.c:3266 sql_help.c:3969 +#: 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:2606 sql_help.c:3193 sql_help.c:3970 +#: sql_help.c:2608 sql_help.c:3195 sql_help.c:3972 msgid "output_expression" msgstr "expressão_saída" -#: sql_help.c:2607 sql_help.c:3194 sql_help.c:3622 sql_help.c:3711 -#: sql_help.c:3861 sql_help.c:3971 sql_help.c:4055 +#: 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:2623 +#: sql_help.c:2625 msgid "code" msgstr "código" -#: sql_help.c:2974 +#: sql_help.c:2976 msgid "parameter" msgstr "parâmetro" -#: sql_help.c:2993 sql_help.c:2994 sql_help.c:3291 +#: sql_help.c:2995 sql_help.c:2996 sql_help.c:3293 msgid "statement" msgstr "comando" -#: sql_help.c:3025 sql_help.c:3265 +#: sql_help.c:3027 sql_help.c:3267 msgid "direction" msgstr "direção" -#: sql_help.c:3027 sql_help.c:3267 +#: 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:3028 sql_help.c:3029 sql_help.c:3030 sql_help.c:3031 -#: sql_help.c:3032 sql_help.c:3268 sql_help.c:3269 sql_help.c:3270 -#: sql_help.c:3271 sql_help.c:3272 sql_help.c:3632 sql_help.c:3634 -#: sql_help.c:3722 sql_help.c:3724 sql_help.c:3871 sql_help.c:3873 -#: sql_help.c:4000 sql_help.c:4002 sql_help.c:4065 sql_help.c:4067 +#: 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:3112 sql_help.c:3444 +#: sql_help.c:3114 sql_help.c:3446 msgid "sequence_name" msgstr "nome_sequência" -#: sql_help.c:3125 sql_help.c:3457 +#: sql_help.c:3127 sql_help.c:3459 msgid "arg_name" msgstr "nome_argumento" -#: sql_help.c:3126 sql_help.c:3458 +#: sql_help.c:3128 sql_help.c:3460 msgid "arg_type" msgstr "tipo_argumento" -#: sql_help.c:3131 sql_help.c:3463 +#: sql_help.c:3133 sql_help.c:3465 msgid "loid" msgstr "loid" -#: sql_help.c:3154 +#: sql_help.c:3156 msgid "remote_schema" msgstr "esquema_remoto" -#: sql_help.c:3157 +#: sql_help.c:3159 msgid "local_schema" msgstr "esquema_local" -#: sql_help.c:3191 +#: sql_help.c:3193 msgid "conflict_target" msgstr "alvo_conflito" -#: sql_help.c:3192 +#: sql_help.c:3194 msgid "conflict_action" msgstr "ação_conflito" -#: sql_help.c:3195 +#: sql_help.c:3197 msgid "where conflict_target can be one of:" msgstr "onde alvo_conflito pode ser um dos:" -#: sql_help.c:3196 +#: sql_help.c:3198 msgid "index_column_name" msgstr "nome_coluna_índice" -#: sql_help.c:3197 +#: sql_help.c:3199 msgid "index_expression" msgstr "expressão_índice" -#: sql_help.c:3200 +#: sql_help.c:3202 msgid "index_predicate" msgstr "predicado_índice" -#: sql_help.c:3202 +#: sql_help.c:3204 msgid "and conflict_action is one of:" msgstr "onde ação_conflito é uma das:" -#: sql_help.c:3208 sql_help.c:3966 +#: sql_help.c:3210 sql_help.c:3968 msgid "sub-SELECT" msgstr "sub-SELECT" -#: sql_help.c:3217 sql_help.c:3280 sql_help.c:3942 +#: sql_help.c:3219 sql_help.c:3282 sql_help.c:3944 msgid "channel" msgstr "canal" -#: sql_help.c:3239 +#: sql_help.c:3241 msgid "lockmode" msgstr "modo_bloqueio" -#: sql_help.c:3240 +#: sql_help.c:3242 msgid "where lockmode is one of:" msgstr "onde modo_bloqueio é um dos:" -#: sql_help.c:3281 +#: sql_help.c:3283 msgid "payload" msgstr "informação" -#: sql_help.c:3308 +#: sql_help.c:3310 msgid "old_role" msgstr "role_antiga" -#: sql_help.c:3309 +#: sql_help.c:3311 msgid "new_role" msgstr "nova_role" -#: sql_help.c:3334 sql_help.c:3495 sql_help.c:3503 +#: sql_help.c:3336 sql_help.c:3497 sql_help.c:3505 msgid "savepoint_name" msgstr "nome_ponto_de_salvamento" -#: sql_help.c:3536 +#: sql_help.c:3538 msgid "provider" msgstr "fornecedor" -#: sql_help.c:3623 sql_help.c:3665 sql_help.c:3667 sql_help.c:3713 -#: sql_help.c:3862 sql_help.c:3904 sql_help.c:3906 sql_help.c:4056 -#: sql_help.c:4098 sql_help.c:4100 +#: 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:3625 sql_help.c:3677 sql_help.c:3864 sql_help.c:3916 -#: sql_help.c:4058 sql_help.c:4110 +#: 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:3627 sql_help.c:3717 sql_help.c:3866 sql_help.c:4060 +#: 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:3628 sql_help.c:3718 sql_help.c:3867 sql_help.c:4061 +#: 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:3629 sql_help.c:3643 sql_help.c:3681 sql_help.c:3719 -#: sql_help.c:3868 sql_help.c:3882 sql_help.c:3920 sql_help.c:4062 -#: sql_help.c:4076 sql_help.c:4114 +#: 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:3636 sql_help.c:3875 sql_help.c:4069 +#: 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:3639 sql_help.c:3645 sql_help.c:3648 sql_help.c:3652 -#: sql_help.c:3664 sql_help.c:3878 sql_help.c:3884 sql_help.c:3887 -#: sql_help.c:3891 sql_help.c:3903 sql_help.c:4072 sql_help.c:4078 -#: sql_help.c:4081 sql_help.c:4085 sql_help.c:4097 +#: 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:3640 sql_help.c:3879 sql_help.c:4073 +#: sql_help.c:3642 sql_help.c:3881 sql_help.c:4075 msgid "sampling_method" msgstr "método_amostragem" -#: sql_help.c:3641 sql_help.c:3650 sql_help.c:3654 sql_help.c:3658 -#: sql_help.c:3661 sql_help.c:3880 sql_help.c:3889 sql_help.c:3893 -#: sql_help.c:3897 sql_help.c:3900 sql_help.c:4074 sql_help.c:4083 -#: sql_help.c:4087 sql_help.c:4091 sql_help.c:4094 +#: 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:3642 sql_help.c:3881 sql_help.c:4075 +#: sql_help.c:3644 sql_help.c:3883 sql_help.c:4077 msgid "seed" msgstr "semente" -#: sql_help.c:3646 sql_help.c:3679 sql_help.c:3885 sql_help.c:3918 -#: sql_help.c:4079 sql_help.c:4112 +#: 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:3656 sql_help.c:3659 sql_help.c:3662 sql_help.c:3895 -#: sql_help.c:3898 sql_help.c:3901 sql_help.c:4089 sql_help.c:4092 -#: sql_help.c:4095 +#: 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:3666 sql_help.c:3905 sql_help.c:4099 +#: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 msgid "join_type" msgstr "tipo_junção" -#: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 +#: sql_help.c:3670 sql_help.c:3909 sql_help.c:4103 msgid "join_condition" msgstr "condição_junção" -#: sql_help.c:3669 sql_help.c:3908 sql_help.c:4102 +#: sql_help.c:3671 sql_help.c:3910 sql_help.c:4104 msgid "join_column" msgstr "coluna_junção" -#: sql_help.c:3670 sql_help.c:3909 sql_help.c:4103 +#: 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:3678 sql_help.c:3917 sql_help.c:4111 +#: sql_help.c:3680 sql_help.c:3919 sql_help.c:4113 msgid "and with_query is:" msgstr "e consulta_with é:" -#: sql_help.c:3682 sql_help.c:3921 sql_help.c:4115 +#: sql_help.c:3684 sql_help.c:3923 sql_help.c:4117 msgid "values" msgstr "valores" -#: sql_help.c:3683 sql_help.c:3922 sql_help.c:4116 +#: sql_help.c:3685 sql_help.c:3924 sql_help.c:4118 msgid "insert" msgstr "inserção" -#: sql_help.c:3684 sql_help.c:3923 sql_help.c:4117 +#: sql_help.c:3686 sql_help.c:3925 sql_help.c:4119 msgid "update" msgstr "atualização" -#: sql_help.c:3685 sql_help.c:3924 sql_help.c:4118 +#: sql_help.c:3687 sql_help.c:3926 sql_help.c:4120 msgid "delete" msgstr "exclusão" -#: sql_help.c:3712 +#: sql_help.c:3714 msgid "new_table" msgstr "nova_tabela" -#: sql_help.c:3737 +#: sql_help.c:3739 msgid "timezone" msgstr "zona_horária" -#: sql_help.c:3782 +#: sql_help.c:3784 msgid "snapshot_id" msgstr "id_snapshot" -#: sql_help.c:3967 +#: sql_help.c:3969 msgid "from_list" msgstr "lista_from" -#: sql_help.c:3998 +#: sql_help.c:4000 msgid "sort_expression" msgstr "expressão_ordenação" -#: sql_help.c:4125 sql_help.c:4865 +#: sql_help.c:4127 sql_help.c:4867 msgid "abort the current transaction" msgstr "transação atual foi interrompida" -#: sql_help.c:4130 +#: 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.c:4135 +#: sql_help.c:4137 msgid "change the definition of a collation" msgstr "muda a definição de uma ordenação" -#: sql_help.c:4140 +#: sql_help.c:4142 msgid "change the definition of a conversion" msgstr "muda a definição de uma conversão" -#: sql_help.c:4145 +#: sql_help.c:4147 msgid "change a database" msgstr "muda o banco de dados" -#: sql_help.c:4150 +#: sql_help.c:4152 msgid "define default access privileges" msgstr "define privilégios de acesso padrão" -#: sql_help.c:4155 +#: sql_help.c:4157 msgid "change the definition of a domain" msgstr "muda a definição de um domínio" -#: sql_help.c:4160 +#: sql_help.c:4162 msgid "change the definition of an event trigger" msgstr "muda a definição de um gatilho de eventos" -#: sql_help.c:4165 +#: sql_help.c:4167 msgid "change the definition of an extension" msgstr "muda a definição de uma extensão" -#: sql_help.c:4170 +#: 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.c:4175 +#: sql_help.c:4177 msgid "change the definition of a foreign table" msgstr "muda a definição de uma tabela externa" -#: sql_help.c:4180 +#: sql_help.c:4182 msgid "change the definition of a function" msgstr "muda a definição de uma função" -#: sql_help.c:4185 +#: sql_help.c:4187 msgid "change role name or membership" msgstr "muda nome da role ou membro" -#: sql_help.c:4190 +#: sql_help.c:4192 msgid "change the definition of an index" msgstr "muda a definição de um índice" -#: sql_help.c:4195 +#: sql_help.c:4197 msgid "change the definition of a procedural language" msgstr "muda a definição de uma linguagem procedural" -#: sql_help.c:4200 +#: sql_help.c:4202 msgid "change the definition of a large object" msgstr "muda a definição de um objeto grande" -#: sql_help.c:4205 +#: sql_help.c:4207 msgid "change the definition of a materialized view" msgstr "muda a definição de uma visão materializada" -#: sql_help.c:4210 +#: sql_help.c:4212 msgid "change the definition of an operator" msgstr "muda a definição de um operador" -#: sql_help.c:4215 +#: sql_help.c:4217 msgid "change the definition of an operator class" msgstr "muda a definição de uma classe de operadores" -#: sql_help.c:4220 +#: 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.c:4225 +#: 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.c:4230 sql_help.c:4300 +#: sql_help.c:4232 sql_help.c:4302 msgid "change a database role" msgstr "muda uma role do banco de dados" -#: sql_help.c:4235 +#: sql_help.c:4237 msgid "change the definition of a rule" msgstr "muda a definição de uma regra" -#: sql_help.c:4240 +#: sql_help.c:4242 msgid "change the definition of a schema" msgstr "muda a definição de um esquema" -#: sql_help.c:4245 +#: 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.c:4250 +#: sql_help.c:4252 msgid "change the definition of a foreign server" msgstr "muda a definição de um servidor externo" -#: sql_help.c:4255 +#: sql_help.c:4257 msgid "change a server configuration parameter" msgstr "muda um parâmetro de configuração do servidor" -#: sql_help.c:4260 +#: sql_help.c:4262 msgid "change the definition of a table" msgstr "muda a definição de uma tabela" -#: sql_help.c:4265 +#: sql_help.c:4267 msgid "change the definition of a tablespace" msgstr "muda a definição de uma tablespace" -#: sql_help.c:4270 +#: 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.c:4275 +#: 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.c:4280 +#: 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.c:4285 +#: 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.c:4290 +#: sql_help.c:4292 msgid "change the definition of a trigger" msgstr "muda a definição de um gatilho" -#: sql_help.c:4295 +#: sql_help.c:4297 msgid "change the definition of a type" msgstr "muda a definição de um tipo" -#: sql_help.c:4305 +#: 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.c:4310 +#: sql_help.c:4312 msgid "change the definition of a view" msgstr "muda a definição de uma visão" -#: sql_help.c:4315 +#: sql_help.c:4317 msgid "collect statistics about a database" msgstr "coleta estatísticas sobre o banco de dados" -#: sql_help.c:4320 sql_help.c:4930 +#: sql_help.c:4322 sql_help.c:4932 msgid "start a transaction block" msgstr "inicia um bloco de transação" -#: sql_help.c:4325 +#: sql_help.c:4327 msgid "force a transaction log checkpoint" msgstr "força ponto de controle no log de transação" -#: sql_help.c:4330 +#: sql_help.c:4332 msgid "close a cursor" msgstr "fecha um cursor" -#: sql_help.c:4335 +#: sql_help.c:4337 msgid "cluster a table according to an index" msgstr "agrupa uma tabela de acordo com um índice" -#: sql_help.c:4340 +#: 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.c:4345 sql_help.c:4765 +#: sql_help.c:4347 sql_help.c:4767 msgid "commit the current transaction" msgstr "efetiva a transação atual" -#: sql_help.c:4350 +#: 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.c:4355 +#: sql_help.c:4357 msgid "copy data between a file and a table" msgstr "copia dados de um arquivo para uma tabela" -#: sql_help.c:4360 +#: sql_help.c:4362 msgid "define a new access method" msgstr "define um novo método de acesso" -#: sql_help.c:4365 +#: sql_help.c:4367 msgid "define a new aggregate function" msgstr "define um nova função de agregação" -#: sql_help.c:4370 +#: sql_help.c:4372 msgid "define a new cast" msgstr "define uma nova conversão de tipo" -#: sql_help.c:4375 +#: sql_help.c:4377 msgid "define a new collation" msgstr "define uma nova ordenação" -#: sql_help.c:4380 +#: sql_help.c:4382 msgid "define a new encoding conversion" msgstr "define uma nova conversão de codificação" -#: sql_help.c:4385 +#: sql_help.c:4387 msgid "create a new database" msgstr "cria um novo banco de dados" -#: sql_help.c:4390 +#: sql_help.c:4392 msgid "define a new domain" msgstr "define um novo domínio" -#: sql_help.c:4395 +#: sql_help.c:4397 msgid "define a new event trigger" msgstr "define um novo gatilho de eventos" -#: sql_help.c:4400 +#: sql_help.c:4402 msgid "install an extension" msgstr "instala uma extensão" -#: sql_help.c:4405 +#: sql_help.c:4407 msgid "define a new foreign-data wrapper" msgstr "define um novo adaptador de dados externos" -#: sql_help.c:4410 +#: sql_help.c:4412 msgid "define a new foreign table" msgstr "define uma nova tabela externa" -#: sql_help.c:4415 +#: sql_help.c:4417 msgid "define a new function" msgstr "define uma nova função" -#: sql_help.c:4420 sql_help.c:4460 sql_help.c:4535 +#: 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.c:4425 +#: sql_help.c:4427 msgid "define a new index" msgstr "define um novo índice" -#: sql_help.c:4430 +#: sql_help.c:4432 msgid "define a new procedural language" msgstr "define uma nova linguagem procedural" -#: sql_help.c:4435 +#: sql_help.c:4437 msgid "define a new materialized view" msgstr "define uma nova visão materializada" -#: sql_help.c:4440 +#: sql_help.c:4442 msgid "define a new operator" msgstr "define um novo operador" -#: sql_help.c:4445 +#: sql_help.c:4447 msgid "define a new operator class" msgstr "define uma nova classe de operadores" -#: sql_help.c:4450 +#: sql_help.c:4452 msgid "define a new operator family" msgstr "define uma nova família de operadores" -#: sql_help.c:4455 +#: 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.c:4465 +#: sql_help.c:4467 msgid "define a new rewrite rule" msgstr "define uma nova regra de reescrita" -#: sql_help.c:4470 +#: sql_help.c:4472 msgid "define a new schema" msgstr "define um novo esquema" -#: sql_help.c:4475 +#: sql_help.c:4477 msgid "define a new sequence generator" msgstr "define um novo gerador de sequência" -#: sql_help.c:4480 +#: sql_help.c:4482 msgid "define a new foreign server" msgstr "define um novo servidor externo" -#: sql_help.c:4485 +#: sql_help.c:4487 msgid "define a new table" msgstr "define uma nova tabela" -#: sql_help.c:4490 sql_help.c:4895 +#: 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.c:4495 +#: sql_help.c:4497 msgid "define a new tablespace" msgstr "define uma nova tablespace" -#: sql_help.c:4500 +#: sql_help.c:4502 msgid "define a new text search configuration" msgstr "define uma nova configuração de busca textual" -#: sql_help.c:4505 +#: sql_help.c:4507 msgid "define a new text search dictionary" msgstr "define um novo dicionário de busca textual" -#: sql_help.c:4510 +#: sql_help.c:4512 msgid "define a new text search parser" msgstr "define um novo analisador de busca textual" -#: sql_help.c:4515 +#: sql_help.c:4517 msgid "define a new text search template" msgstr "define um novo modelo de busca textual" -#: sql_help.c:4520 +#: sql_help.c:4522 msgid "define a new transform" msgstr "define uma nova transformação" -#: sql_help.c:4525 +#: sql_help.c:4527 msgid "define a new trigger" msgstr "define um novo gatilho" -#: sql_help.c:4530 +#: sql_help.c:4532 msgid "define a new data type" msgstr "define um novo tipo de dado" -#: sql_help.c:4540 +#: 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.c:4545 +#: sql_help.c:4547 msgid "define a new view" msgstr "define uma nova visão" -#: sql_help.c:4550 +#: sql_help.c:4552 msgid "deallocate a prepared statement" msgstr "remove um comando preparado" -#: sql_help.c:4555 +#: sql_help.c:4557 msgid "define a cursor" msgstr "define um cursor" -#: sql_help.c:4560 +#: sql_help.c:4562 msgid "delete rows of a table" msgstr "apaga registros de uma tabela" -#: sql_help.c:4565 +#: sql_help.c:4567 msgid "discard session state" msgstr "descarta estado da sessão" -#: sql_help.c:4570 +#: sql_help.c:4572 msgid "execute an anonymous code block" msgstr "executa um bloco de código anônimo" -#: sql_help.c:4575 +#: sql_help.c:4577 msgid "remove an access method" msgstr "remove um método de acesso" -#: sql_help.c:4580 +#: sql_help.c:4582 msgid "remove an aggregate function" msgstr "remove uma função de agregação" -#: sql_help.c:4585 +#: sql_help.c:4587 msgid "remove a cast" msgstr "remove uma conversão de tipo" -#: sql_help.c:4590 +#: sql_help.c:4592 msgid "remove a collation" msgstr "remove uma ordenação" -#: sql_help.c:4595 +#: sql_help.c:4597 msgid "remove a conversion" msgstr "remove uma conversão" -#: sql_help.c:4600 +#: sql_help.c:4602 msgid "remove a database" msgstr "remove um banco de dados" -#: sql_help.c:4605 +#: sql_help.c:4607 msgid "remove a domain" msgstr "remove um domínio" -#: sql_help.c:4610 +#: sql_help.c:4612 msgid "remove an event trigger" msgstr "remove um gatilho de eventos" -#: sql_help.c:4615 +#: sql_help.c:4617 msgid "remove an extension" msgstr "remove uma extensão" -#: sql_help.c:4620 +#: sql_help.c:4622 msgid "remove a foreign-data wrapper" msgstr "remove um adaptador de dados externos" -#: sql_help.c:4625 +#: sql_help.c:4627 msgid "remove a foreign table" msgstr "remove uma tabela externa" -#: sql_help.c:4630 +#: sql_help.c:4632 msgid "remove a function" msgstr "remove uma função" -#: sql_help.c:4635 sql_help.c:4680 sql_help.c:4750 +#: 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.c:4640 +#: sql_help.c:4642 msgid "remove an index" msgstr "remove um índice" -#: sql_help.c:4645 +#: sql_help.c:4647 msgid "remove a procedural language" msgstr "remove uma linguagem procedural" -#: sql_help.c:4650 +#: sql_help.c:4652 msgid "remove a materialized view" msgstr "remove uma visão materializada" -#: sql_help.c:4655 +#: sql_help.c:4657 msgid "remove an operator" msgstr "remove um operador" -#: sql_help.c:4660 +#: sql_help.c:4662 msgid "remove an operator class" msgstr "remove uma classe de operadores" -#: sql_help.c:4665 +#: sql_help.c:4667 msgid "remove an operator family" msgstr "remove uma família de operadores" -#: sql_help.c:4670 +#: 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.c:4675 +#: 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.c:4685 +#: sql_help.c:4687 msgid "remove a rewrite rule" msgstr "remove uma regra de reescrita" -#: sql_help.c:4690 +#: sql_help.c:4692 msgid "remove a schema" msgstr "remove um esquema" -#: sql_help.c:4695 +#: sql_help.c:4697 msgid "remove a sequence" msgstr "remove uma sequência" -#: sql_help.c:4700 +#: sql_help.c:4702 msgid "remove a foreign server descriptor" msgstr "remove um descritor de servidor externo" -#: sql_help.c:4705 +#: sql_help.c:4707 msgid "remove a table" msgstr "remove uma tabela" -#: sql_help.c:4710 +#: sql_help.c:4712 msgid "remove a tablespace" msgstr "remove uma tablespace" -#: sql_help.c:4715 +#: sql_help.c:4717 msgid "remove a text search configuration" msgstr "remove uma configuração de busca textual" -#: sql_help.c:4720 +#: sql_help.c:4722 msgid "remove a text search dictionary" msgstr "remove um dicionário de busca textual" -#: sql_help.c:4725 +#: sql_help.c:4727 msgid "remove a text search parser" msgstr "remove um analisador de busca textual" -#: sql_help.c:4730 +#: sql_help.c:4732 msgid "remove a text search template" msgstr "remove um modelo de busca textual" -#: sql_help.c:4735 +#: sql_help.c:4737 msgid "remove a transform" msgstr "remove uma transformação" -#: sql_help.c:4740 +#: sql_help.c:4742 msgid "remove a trigger" msgstr "remove um gatilho" -#: sql_help.c:4745 +#: sql_help.c:4747 msgid "remove a data type" msgstr "remove um tipo de dado" -#: sql_help.c:4755 +#: 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.c:4760 +#: sql_help.c:4762 msgid "remove a view" msgstr "remove uma visão" -#: sql_help.c:4770 +#: sql_help.c:4772 msgid "execute a prepared statement" msgstr "executa um comando preparado" -#: sql_help.c:4775 +#: sql_help.c:4777 msgid "show the execution plan of a statement" msgstr "mostra o plano de execução de um comando" -#: sql_help.c:4780 +#: sql_help.c:4782 msgid "retrieve rows from a query using a cursor" msgstr "recupera registros de uma consulta utilizando um cursor" -#: sql_help.c:4785 +#: sql_help.c:4787 msgid "define access privileges" msgstr "define privilégios de acesso" -#: sql_help.c:4790 +#: sql_help.c:4792 msgid "import table definitions from a foreign server" msgstr "importa definições de tabelas de um servidor externo" -#: sql_help.c:4795 +#: sql_help.c:4797 msgid "create new rows in a table" msgstr "cria novos registros em uma tabela" -#: sql_help.c:4800 +#: sql_help.c:4802 msgid "listen for a notification" msgstr "espera por uma notificação" -#: sql_help.c:4805 +#: sql_help.c:4807 msgid "load a shared library file" msgstr "carrega um arquivo de biblioteca compartilhada" -#: sql_help.c:4810 +#: sql_help.c:4812 msgid "lock a table" msgstr "bloqueia uma tabela" -#: sql_help.c:4815 +#: sql_help.c:4817 msgid "position a cursor" msgstr "posiciona um cursor" -#: sql_help.c:4820 +#: sql_help.c:4822 msgid "generate a notification" msgstr "gera uma notificação" -#: sql_help.c:4825 +#: sql_help.c:4827 msgid "prepare a statement for execution" msgstr "prepara um comando para execução" -#: sql_help.c:4830 +#: 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.c:4835 +#: 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.c:4840 +#: sql_help.c:4842 msgid "replace the contents of a materialized view" msgstr "substitui o conteúdo de uma visão materializada" -#: sql_help.c:4845 +#: sql_help.c:4847 msgid "rebuild indexes" msgstr "reconstrói índices" -#: sql_help.c:4850 +#: sql_help.c:4852 msgid "destroy a previously defined savepoint" msgstr "destrói um ponto de salvamento definido anteriormente" -#: sql_help.c:4855 +#: 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.c:4860 +#: sql_help.c:4862 msgid "remove access privileges" msgstr "remove privilégios de acesso" -#: sql_help.c:4870 +#: 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.c:4875 +#: sql_help.c:4877 msgid "roll back to a savepoint" msgstr "desfaz modificações de um ponto de salvamento" -#: sql_help.c:4880 +#: 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.c:4885 +#: 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.c:4890 sql_help.c:4935 sql_help.c:4965 +#: 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.c:4900 +#: sql_help.c:4902 msgid "change a run-time parameter" msgstr "muda um parâmetro em tempo de execução" -#: sql_help.c:4905 +#: 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.c:4910 +#: 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.c:4915 +#: 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.c:4920 +#: sql_help.c:4922 msgid "set the characteristics of the current transaction" msgstr "define as características da transação atual" -#: sql_help.c:4925 +#: 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.c:4940 +#: sql_help.c:4942 msgid "empty a table or set of tables" msgstr "esvazia uma tabela ou um conjunto de tabelas" -#: sql_help.c:4945 +#: sql_help.c:4947 msgid "stop listening for a notification" msgstr "para de esperar por notificação" -#: sql_help.c:4950 +#: sql_help.c:4952 msgid "update rows of a table" msgstr "atualiza registros de uma tabela" -#: sql_help.c:4955 +#: sql_help.c:4957 msgid "garbage-collect and optionally analyze a database" msgstr "coleta lixo e opcionalmente analisa um banco de dados" -#: sql_help.c:4960 +#: sql_help.c:4962 msgid "compute a set of rows" msgstr "computa um conjunto de registros" @@ -5283,7 +5294,7 @@ msgstr "%s: não pôde encontrar executável\n" msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n" msgstr "valor desconhecido \"%s\" para \"%s\"; definindo \"%s\"\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/ru.po b/src/bin/psql/po/ru.po index 261c932a04..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: 2017-02-01 23:13+0000\n" -"PO-Revision-Date: 2016-11-24 15:40+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" @@ -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" @@ -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 "попытка выйти из режима копированиÑ" @@ -1468,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 "ÐаÑледует" @@ -3563,34 +3574,34 @@ msgstr "%s: нехватка памÑти\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 "имÑ" -#: 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 +#: 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 "Ñигнатура_агр_функции" @@ -3600,7 +3611,7 @@ msgstr "Ñигнатура_агр_функции" #: 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 "новое_имÑ" @@ -3608,75 +3619,75 @@ msgstr "новое_имÑ" #: 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:1106 sql_help.c:1127 sql_help.c:1189 sql_help.c:1295 +#: sql_help.c:2326 msgid "new_owner" msgstr "новый_владелец" #: 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:1141 sql_help.c:1153 sql_help.c:1196 sql_help.c:1299 msgid "new_schema" msgstr "новаÑ_Ñхема" -#: 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 "где Ñигнатура_агр_функции:" #: 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 +#: 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 "режим_аргумента" #: 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 +#: 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 "имÑ_аргумента" #: 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 +#: 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 "тип_аргумента" #: 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 +#: 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 "параметр" -#: 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 "где допуÑтимые параметры:" -#: sql_help.c:112 sql_help.c:1735 +#: sql_help.c:112 sql_help.c:1739 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 +#: 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 "предел_подключений" -#: sql_help.c:114 sql_help.c:1737 +#: sql_help.c:114 sql_help.c:1741 msgid "istemplate" msgstr "Ñто_шаблон" @@ -3686,20 +3697,20 @@ msgstr "новое_табл_проÑтранÑтво" #: 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 +#: 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 "параметр_конфигурации" #: 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: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 "значение" @@ -3707,9 +3718,9 @@ msgstr "значение" 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 +#: 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 "имÑ_Ñхемы" @@ -3723,32 +3734,32 @@ msgstr "где допуÑтимое предложение_GRANT_или_REVOKE:" #: 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 +#: 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 "имÑ_роли" #: 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 +#: 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 "выражение" @@ -3758,9 +3769,9 @@ msgstr "ограничение_домена" #: 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 "имÑ_ограничениÑ" @@ -3784,72 +3795,72 @@ msgstr "где Ñлемент_объект:" #: 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: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: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: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 "имÑ_объекта" # well-spelled: агр -#: sql_help.c:310 sql_help.c:1404 sql_help.c:3538 +#: sql_help.c:310 sql_help.c:1408 sql_help.c:3542 msgid "aggregate_name" msgstr "имÑ_агр_функции" -#: sql_help.c:312 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 "иÑходный_тип" -#: sql_help.c:313 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 "целевой_тип" -#: 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 +#: 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 "имÑ_функции" -#: sql_help.c:325 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 "имÑ_оператора" -#: 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 +#: 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 "тип_Ñлева" -#: 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 +#: 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 "тип_Ñправа" #: 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 "метод_индекÑа" -#: 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 +#: 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 "имÑ_типа" -#: 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 +#: 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 "имÑ_Ñзыка" @@ -3857,16 +3868,16 @@ msgstr "имÑ_Ñзыка" msgid "and aggregate_signature is:" msgstr "и Ñигнатура_агр_функции:" -#: sql_help.c:368 sql_help.c:1546 sql_help.c:1801 +#: sql_help.c:368 sql_help.c:1550 sql_help.c:1805 msgid "handler_function" msgstr "функциÑ_обработчик" -#: sql_help.c:369 sql_help.c:1802 +#: sql_help.c:369 sql_help.c:1806 msgid "validator_function" msgstr "функциÑ_проверки" #: 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 +#: sql_help.c:2268 sql_help.c:2269 sql_help.c:2285 sql_help.c:2286 msgid "action" msgstr "дейÑтвие" @@ -3876,17 +3887,17 @@ msgstr "дейÑтвие" #: 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 "имÑ_Ñтолбца" @@ -3899,20 +3910,20 @@ msgid "where action is one of:" msgstr "где допуÑтимое дейÑтвие:" #: 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 +#: 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 "тип_данных" #: 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 +#: 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 "правило_Ñортировки" -#: sql_help.c:430 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 "ограничение_Ñтолбца" @@ -3925,50 +3936,50 @@ msgstr "целое" msgid "attribute_option" msgstr "атрибут" -#: sql_help.c:450 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 "ограничение_таблицы" #: 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 +#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1457 msgid "trigger_name" msgstr "имÑ_триггера" #: sql_help.c:457 sql_help.c:458 sql_help.c:1042 sql_help.c:1043 -#: sql_help.c:1840 sql_help.c:2244 +#: sql_help.c:1844 sql_help.c:2248 msgid "parent_table" msgstr "таблица_родитель" -#: sql_help.c:515 sql_help.c:565 sql_help.c:628 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 "имÑ_раÑширениÑ" -#: sql_help.c:517 sql_help.c:1885 +#: sql_help.c:517 sql_help.c:1889 msgid "execution_cost" msgstr "ÑтоимоÑть_выполнениÑ" -#: sql_help.c:518 sql_help.c:1886 +#: sql_help.c:518 sql_help.c:1890 msgid "result_rows" msgstr "Ñтрок_в_результате" #: 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 "указание_роли" -#: 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 +#: 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 "имÑ_пользователÑ" -#: sql_help.c:543 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 "где допуÑтимое указание_роли:" @@ -3976,110 +3987,111 @@ msgstr "где допуÑтимое указание_роли:" 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 +#: 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 "табл_проÑтранÑтво" #: 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 +#: 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 "параметр_хранениÑ" -#: sql_help.c:593 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 "oid_большого_объекта" #: sql_help.c:648 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 -#: sql_help.c:1349 +#: sql_help.c:1353 msgid "index_name" msgstr "имÑ_индекÑа" -#: sql_help.c:680 sql_help.c:2001 +#: sql_help.c:680 sql_help.c:2005 msgid "res_proc" msgstr "процедура_ограничениÑ" -#: sql_help.c:681 sql_help.c:2002 +#: sql_help.c:681 sql_help.c:2006 msgid "join_proc" msgstr "процедура_ÑоединениÑ" -#: 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 "номер_Ñтратегии" #: 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 "тип_операции" -#: sql_help.c:737 sql_help.c:2023 +#: sql_help.c:737 sql_help.c:2027 msgid "sort_family_name" msgstr "ÑемейÑтво_Ñортировки" -#: 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 "номер_опорной_процедуры" -#: 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 "тип_аргумента" #: 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 "имÑ_таблицы" -#: sql_help.c:778 sql_help.c:2053 +#: sql_help.c:778 sql_help.c:2057 msgid "using_expression" msgstr "выражение_иÑпользованиÑ" -#: sql_help.c:779 sql_help.c:2054 +#: sql_help.c:779 sql_help.c:2058 msgid "check_expression" msgstr "выражение_проверки" -#: 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 "пароль" -#: 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 "timestamp" -#: 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 "имÑ_БД" -#: sql_help.c:873 sql_help.c:2151 +#: sql_help.c:873 sql_help.c:2155 msgid "increment" msgstr "шаг" -#: sql_help.c:874 sql_help.c:2152 +#: sql_help.c:874 sql_help.c:2156 msgid "minvalue" msgstr "мин_значение" -#: sql_help.c:875 sql_help.c:2153 +#: sql_help.c:875 sql_help.c:2157 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 +#: 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 "начальное_значение" @@ -4087,7 +4099,7 @@ msgstr "начальное_значение" msgid "restart" msgstr "значение_перезапуÑка" -#: sql_help.c:878 sql_help.c:2155 +#: sql_help.c:878 sql_help.c:2159 msgid "cache" msgstr "кеш" @@ -4103,7 +4115,7 @@ msgstr "имÑ_правила_перезапиÑи" msgid "and table_constraint_using_index is:" msgstr "и ограничение_таблицы_Ñ_индекÑом:" -#: 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 "параметр_табл_проÑтранÑтва" @@ -4124,7 +4136,7 @@ msgid "new_dictionary" msgstr "новый_Ñловарь" #: 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 "имÑ_атрибута" @@ -4140,1389 +4152,1389 @@ msgstr "новое_значение_перечиÑлениÑ" 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 +#: 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 "имÑ_Ñервера" -#: 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 "имÑ_параметра_предÑтавлениÑ" -#: sql_help.c:1298 sql_help.c:2567 +#: sql_help.c:1302 sql_help.c:2571 msgid "view_option_value" msgstr "значение_параметра_предÑтавлениÑ" -#: 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 "режим_транзакции" -#: 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 "где допуÑтимый режим_транзакции:" -#: sql_help.c:1409 +#: sql_help.c:1413 msgid "relation_name" msgstr "имÑ_отношениÑ" -#: 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 "имÑ_домена" -#: sql_help.c:1436 +#: sql_help.c:1440 msgid "policy_name" msgstr "имÑ_политики" -#: sql_help.c:1440 +#: sql_help.c:1444 msgid "rule_name" msgstr "имÑ_правила" -#: sql_help.c:1457 +#: sql_help.c:1461 msgid "text" msgstr "текÑÑ‚" -#: 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 "код_транзакции" -#: 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 "имÑ_файла" -#: 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 "команда" -#: 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 "запроÑ" -#: sql_help.c:1522 sql_help.c:2993 +#: sql_help.c:1526 sql_help.c:2997 msgid "where option can be one of:" msgstr "где допуÑтимый параметр:" -#: sql_help.c:1523 +#: sql_help.c:1527 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 +#: 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 "логичеÑкое_значение" -#: sql_help.c:1526 +#: sql_help.c:1530 msgid "delimiter_character" msgstr "Ñимвол_разделитель" -#: sql_help.c:1527 +#: sql_help.c:1531 msgid "null_string" msgstr "предÑтавление_NULL" -#: sql_help.c:1529 +#: sql_help.c:1533 msgid "quote_character" msgstr "Ñимвол_кавычек" -#: sql_help.c:1530 +#: sql_help.c:1534 msgid "escape_character" msgstr "ÑпецÑимвол" -#: sql_help.c:1534 +#: sql_help.c:1538 msgid "encoding_name" msgstr "имÑ_кодировки" -#: sql_help.c:1545 +#: sql_help.c:1549 msgid "access_method_type" msgstr "тип_метода_доÑтупа" -#: 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 "тип_данных_аргумента" -#: 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 "функциÑ_ÑоÑтоÑниÑ" -#: 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 "тип_данных_ÑоÑтоÑниÑ" -#: 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 "размер_данных_ÑоÑтоÑниÑ" -#: 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 "функциÑ_завершениÑ" -#: sql_help.c:1616 sql_help.c:1646 +#: sql_help.c:1620 sql_help.c:1650 msgid "combinefunc" msgstr "комбинирующаÑ_функциÑ" -#: sql_help.c:1617 sql_help.c:1647 +#: sql_help.c:1621 sql_help.c:1651 msgid "serialfunc" msgstr "функциÑ_Ñериализации" -#: sql_help.c:1618 sql_help.c:1648 +#: sql_help.c:1622 sql_help.c:1652 msgid "deserialfunc" msgstr "функциÑ_деÑериализации" -#: 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 "начальное_уÑловие" -#: sql_help.c:1620 sql_help.c:1650 +#: sql_help.c:1624 sql_help.c:1654 msgid "msfunc" msgstr "функциÑ_ÑоÑтоÑниÑ_движ" -#: sql_help.c:1621 sql_help.c:1651 +#: sql_help.c:1625 sql_help.c:1655 msgid "minvfunc" msgstr "обратнаÑ_функциÑ_движ" -#: sql_help.c:1622 sql_help.c:1652 +#: sql_help.c:1626 sql_help.c:1656 msgid "mstate_data_type" msgstr "тип_данных_ÑоÑтоÑниÑ_движ" -#: sql_help.c:1623 sql_help.c:1653 +#: sql_help.c:1627 sql_help.c:1657 msgid "mstate_data_size" msgstr "размер_данных_ÑоÑтоÑниÑ_движ" -#: sql_help.c:1624 sql_help.c:1654 +#: sql_help.c:1628 sql_help.c:1658 msgid "mffunc" msgstr "функциÑ_завершениÑ_движ" -#: sql_help.c:1625 sql_help.c:1655 +#: sql_help.c:1629 sql_help.c:1659 msgid "minitial_condition" msgstr "начальное_уÑловие_движ" -#: sql_help.c:1626 sql_help.c:1656 +#: sql_help.c:1630 sql_help.c:1660 msgid "sort_operator" msgstr "оператор_Ñортировки" -#: sql_help.c:1639 +#: sql_help.c:1643 msgid "or the old syntax" msgstr "или Ñтарый ÑинтакÑиÑ" -#: sql_help.c:1641 +#: sql_help.c:1645 msgid "base_type" msgstr "базовый_тип" -#: sql_help.c:1695 +#: sql_help.c:1699 msgid "locale" msgstr "код_локали" -#: sql_help.c:1696 sql_help.c:1732 +#: sql_help.c:1700 sql_help.c:1736 msgid "lc_collate" msgstr "код_правила_Ñортировки" -#: sql_help.c:1697 sql_help.c:1733 +#: sql_help.c:1701 sql_help.c:1737 msgid "lc_ctype" msgstr "код_клаÑÑификации_Ñимволов" -#: sql_help.c:1699 +#: sql_help.c:1703 msgid "existing_collation" msgstr "ÑущеÑтвующее_правило_Ñортировки" -#: sql_help.c:1709 +#: sql_help.c:1713 msgid "source_encoding" msgstr "иÑходнаÑ_кодировка" -#: sql_help.c:1710 +#: sql_help.c:1714 msgid "dest_encoding" msgstr "целеваÑ_кодировка" -#: sql_help.c:1730 sql_help.c:2350 +#: sql_help.c:1734 sql_help.c:2354 msgid "template" msgstr "шаблон" -#: sql_help.c:1731 +#: sql_help.c:1735 msgid "encoding" msgstr "кодировка" -#: sql_help.c:1757 +#: sql_help.c:1761 msgid "constraint" msgstr "ограничение" -#: sql_help.c:1758 +#: sql_help.c:1762 msgid "where constraint is:" msgstr "где ограничение:" -#: 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 "Ñобытие" -#: sql_help.c:1773 +#: sql_help.c:1777 msgid "filter_variable" msgstr "переменнаÑ_фильтра" -#: sql_help.c:1788 +#: sql_help.c:1792 msgid "version" msgstr "верÑиÑ" -#: sql_help.c:1789 +#: sql_help.c:1793 msgid "old_version" msgstr "ÑтараÑ_верÑиÑ" -#: sql_help.c:1844 sql_help.c:2256 +#: sql_help.c:1848 sql_help.c:2260 msgid "where column_constraint is:" msgstr "где ограничение_Ñтолбца:" -#: 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 "выражение_по_умолчанию" -#: sql_help.c:1848 sql_help.c:2266 +#: sql_help.c:1852 sql_help.c:2270 msgid "and table_constraint is:" msgstr "и ограничение_таблицы:" -#: sql_help.c:1880 +#: sql_help.c:1884 msgid "rettype" msgstr "тип_возврата" -#: sql_help.c:1882 +#: sql_help.c:1886 msgid "column_type" msgstr "тип_Ñтолбца" -#: sql_help.c:1890 +#: sql_help.c:1894 msgid "definition" msgstr "определение" -#: sql_help.c:1891 +#: sql_help.c:1895 msgid "obj_file" msgstr "объектный_файл" -#: sql_help.c:1892 +#: sql_help.c:1896 msgid "link_symbol" msgstr "Ñимвол_в_ÑкÑпорте" -#: sql_help.c:1893 +#: sql_help.c:1897 msgid "attribute" msgstr "атрибут" -#: 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 "метод" -#: 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 "клаÑÑ_оператора" -#: sql_help.c:1949 sql_help.c:2277 +#: sql_help.c:1953 sql_help.c:2281 msgid "predicate" msgstr "предикат" -#: sql_help.c:1961 +#: sql_help.c:1965 msgid "call_handler" msgstr "обработчик_вызова" -#: sql_help.c:1962 +#: sql_help.c:1966 msgid "inline_handler" msgstr "обработчик_внедрённого_кода" -#: sql_help.c:1963 +#: sql_help.c:1967 msgid "valfunction" msgstr "функциÑ_проверки" -#: sql_help.c:1999 +#: sql_help.c:2003 msgid "com_op" msgstr "коммут_оператор" -#: sql_help.c:2000 +#: sql_help.c:2004 msgid "neg_op" msgstr "обратный_оператор" -#: sql_help.c:2018 +#: sql_help.c:2022 msgid "family_name" msgstr "имÑ_ÑемейÑтва" -#: sql_help.c:2029 +#: sql_help.c:2033 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 +#: 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 "уÑловие" -#: sql_help.c:2113 sql_help.c:2428 +#: sql_help.c:2117 sql_help.c:2432 msgid "where event can be one of:" msgstr "где допуÑтимое Ñобытие:" -#: sql_help.c:2132 sql_help.c:2134 +#: sql_help.c:2136 sql_help.c:2138 msgid "schema_element" msgstr "Ñлемент_Ñхемы" -#: sql_help.c:2168 +#: sql_help.c:2172 msgid "server_type" msgstr "тип_Ñервера" -#: sql_help.c:2169 +#: sql_help.c:2173 msgid "server_version" msgstr "верÑиÑ_Ñервера" -#: 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 "имÑ_обёртки_Ñторонних_данных" -#: sql_help.c:2242 +#: sql_help.c:2246 msgid "source_table" msgstr "иÑходнаÑ_таблица" -#: sql_help.c:2243 +#: sql_help.c:2247 msgid "like_option" msgstr "параметр_порождениÑ" -#: 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 "параметры_индекÑа" -#: sql_help.c:2262 sql_help.c:2279 +#: sql_help.c:2266 sql_help.c:2283 msgid "reftable" msgstr "целеваÑ_таблица" -#: sql_help.c:2263 sql_help.c:2280 +#: sql_help.c:2267 sql_help.c:2284 msgid "refcolumn" msgstr "целевой_Ñтолбец" -#: sql_help.c:2274 +#: sql_help.c:2278 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 +#: 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 "оператор" -#: sql_help.c:2283 +#: sql_help.c:2287 msgid "and like_option is:" msgstr "и параметр_порождениÑ:" -#: sql_help.c:2284 +#: sql_help.c:2288 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "параметры_индекÑа в ограничениÑÑ… UNIQUE, PRIMARY KEY и EXCLUDE:" -#: sql_help.c:2288 +#: sql_help.c:2292 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "объект_иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð² ограничении EXCLUDE:" -#: sql_help.c:2323 +#: sql_help.c:2327 msgid "directory" msgstr "каталог" -#: sql_help.c:2337 +#: sql_help.c:2341 msgid "parser_name" msgstr "имÑ_анализатора" -#: sql_help.c:2338 +#: sql_help.c:2342 msgid "source_config" msgstr "иÑходнаÑ_конфигурациÑ" -#: sql_help.c:2367 +#: sql_help.c:2371 msgid "start_function" msgstr "функциÑ_начала" -#: sql_help.c:2368 +#: sql_help.c:2372 msgid "gettoken_function" msgstr "функциÑ_выдачи_фрагмента" -#: sql_help.c:2369 +#: sql_help.c:2373 msgid "end_function" msgstr "функциÑ_окончаниÑ" -#: sql_help.c:2370 +#: sql_help.c:2374 msgid "lextypes_function" msgstr "функциÑ_лекÑ_типов" -#: sql_help.c:2371 +#: sql_help.c:2375 msgid "headline_function" msgstr "функциÑ_ÑозданиÑ_выдержек" -#: sql_help.c:2383 +#: sql_help.c:2387 msgid "init_function" msgstr "функциÑ_инициализации" -#: sql_help.c:2384 +#: sql_help.c:2388 msgid "lexize_function" msgstr "функциÑ_выделениÑ_лекÑем" -#: sql_help.c:2397 +#: sql_help.c:2401 msgid "from_sql_function_name" msgstr "имÑ_функции_из_sql" -#: sql_help.c:2399 +#: sql_help.c:2403 msgid "to_sql_function_name" msgstr "имÑ_функции_в_sql" -#: sql_help.c:2424 +#: sql_help.c:2428 msgid "referenced_table_name" msgstr "ÑÑылающаÑÑÑ_таблица" -#: sql_help.c:2427 +#: sql_help.c:2431 msgid "arguments" msgstr "аргументы" -#: sql_help.c:2477 sql_help.c:3557 +#: sql_help.c:2481 sql_help.c:3561 msgid "label" msgstr "метка" -#: sql_help.c:2479 +#: sql_help.c:2483 msgid "subtype" msgstr "подтип" -#: sql_help.c:2480 +#: sql_help.c:2484 msgid "subtype_operator_class" msgstr "клаÑÑ_оператора_подтипа" -#: sql_help.c:2482 +#: sql_help.c:2486 msgid "canonical_function" msgstr "каноничеÑкаÑ_функциÑ" -#: sql_help.c:2483 +#: sql_help.c:2487 msgid "subtype_diff_function" msgstr "функциÑ_различий_подтипа" -#: sql_help.c:2485 +#: sql_help.c:2489 msgid "input_function" msgstr "функциÑ_ввода" -#: sql_help.c:2486 +#: sql_help.c:2490 msgid "output_function" msgstr "функциÑ_вывода" -#: sql_help.c:2487 +#: sql_help.c:2491 msgid "receive_function" msgstr "функциÑ_получениÑ" -#: sql_help.c:2488 +#: sql_help.c:2492 msgid "send_function" msgstr "функциÑ_отправки" -#: sql_help.c:2489 +#: sql_help.c:2493 msgid "type_modifier_input_function" msgstr "функциÑ_ввода_модификатора_типа" -#: sql_help.c:2490 +#: sql_help.c:2494 msgid "type_modifier_output_function" msgstr "функциÑ_вывода_модификатора_типа" -#: sql_help.c:2491 +#: sql_help.c:2495 msgid "analyze_function" msgstr "функциÑ_анализа" -#: sql_help.c:2492 +#: sql_help.c:2496 msgid "internallength" msgstr "внутр_длина" -#: sql_help.c:2493 +#: sql_help.c:2497 msgid "alignment" msgstr "выравнивание" -#: sql_help.c:2494 +#: sql_help.c:2498 msgid "storage" msgstr "хранение" -#: sql_help.c:2495 +#: sql_help.c:2499 msgid "like_type" msgstr "тип_образец" -#: sql_help.c:2496 +#: sql_help.c:2500 msgid "category" msgstr "категориÑ" -#: sql_help.c:2497 +#: sql_help.c:2501 msgid "preferred" msgstr "предпочитаемый" -#: sql_help.c:2498 +#: sql_help.c:2502 msgid "default" msgstr "по_умолчанию" -#: sql_help.c:2499 +#: sql_help.c:2503 msgid "element" msgstr "Ñлемент" -#: sql_help.c:2500 +#: sql_help.c:2504 msgid "delimiter" msgstr "разделитель" -#: sql_help.c:2501 +#: sql_help.c:2505 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 +#: 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" -#: 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 "пÑевдоним" -#: sql_help.c:2601 +#: sql_help.c:2605 msgid "using_list" msgstr "ÑпиÑок_USING" -#: 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 "имÑ_курÑора" -#: 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 "выражение_результата" -#: 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 "имÑ_результата" -#: sql_help.c:2621 +#: sql_help.c:2625 msgid "code" msgstr "внедрённый_код" -#: sql_help.c:2972 +#: sql_help.c:2976 msgid "parameter" msgstr "параметр" -#: 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 "оператор" -#: sql_help.c:3023 sql_help.c:3263 +#: sql_help.c:3027 sql_help.c:3267 msgid "direction" msgstr "направление" -#: 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 "где допуÑтимое направление пуÑтое или:" -#: 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 "чиÑло" -#: sql_help.c:3110 sql_help.c:3442 +#: sql_help.c:3114 sql_help.c:3446 msgid "sequence_name" msgstr "имÑ_поÑледовательноÑти" -#: sql_help.c:3123 sql_help.c:3455 +#: sql_help.c:3127 sql_help.c:3459 msgid "arg_name" msgstr "имÑ_аргумента" -#: sql_help.c:3124 sql_help.c:3456 +#: sql_help.c:3128 sql_help.c:3460 msgid "arg_type" msgstr "тип_аргумента" -#: sql_help.c:3129 sql_help.c:3461 +#: sql_help.c:3133 sql_help.c:3465 msgid "loid" msgstr "код_БО" -#: sql_help.c:3152 +#: sql_help.c:3156 msgid "remote_schema" msgstr "удалённаÑ_Ñхема" -#: sql_help.c:3155 +#: sql_help.c:3159 msgid "local_schema" msgstr "локальнаÑ_Ñхема" -#: sql_help.c:3189 +#: sql_help.c:3193 msgid "conflict_target" msgstr "объект_конфликта" -#: sql_help.c:3190 +#: sql_help.c:3194 msgid "conflict_action" msgstr "дейÑтвие_при_конфликте" -#: sql_help.c:3193 +#: sql_help.c:3197 msgid "where conflict_target can be one of:" msgstr "где допуÑтимый объект_конфликта:" -#: sql_help.c:3194 +#: sql_help.c:3198 msgid "index_column_name" msgstr "имÑ_Ñтолбца_индекÑа" -#: sql_help.c:3195 +#: sql_help.c:3199 msgid "index_expression" msgstr "выражение_индекÑа" -#: sql_help.c:3198 +#: sql_help.c:3202 msgid "index_predicate" msgstr "предикат_индекÑа" -#: sql_help.c:3200 +#: sql_help.c:3204 msgid "and conflict_action is one of:" msgstr "а допуÑтимое дейÑтвие_при_конфликте:" -#: sql_help.c:3206 sql_help.c:3964 +#: sql_help.c:3210 sql_help.c:3968 msgid "sub-SELECT" msgstr "вложенный_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 "канал" -#: sql_help.c:3237 +#: sql_help.c:3241 msgid "lockmode" msgstr "режим_блокировки" -#: sql_help.c:3238 +#: sql_help.c:3242 msgid "where lockmode is one of:" msgstr "где допуÑтимый режим_блокировки:" -#: sql_help.c:3279 +#: sql_help.c:3283 msgid "payload" msgstr "Ñообщение_нагрузка" -#: sql_help.c:3306 +#: sql_help.c:3310 msgid "old_role" msgstr "ÑтараÑ_роль" -#: sql_help.c:3307 +#: sql_help.c:3311 msgid "new_role" msgstr "новаÑ_роль" -#: 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 "имÑ_точки_ÑохранениÑ" -#: sql_help.c:3534 +#: sql_help.c:3538 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 +#: 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 "иÑточник_данных" -#: 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 "Ñлемент_группированиÑ" -#: 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 "имÑ_окна" -#: 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 "определение_окна" -#: 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 "где допуÑтимый иÑточник_данных:" -#: 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 "пÑевдоним_Ñтолбца" -#: 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 "метод_выборки" -#: 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 "аргумент" -#: 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 "начальное_чиÑло" -#: 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" -#: 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 "определение_Ñтолбца" -#: 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 "тип_ÑоединениÑ" -#: 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 "уÑловие_ÑоединениÑ" -#: 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 "Ñтолбец_ÑоединениÑ" -#: 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 "где допуÑтимый Ñлемент_группированиÑ:" -#: 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 "и запроÑ_WITH:" -#: 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 "значениÑ" -#: 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 "новаÑ_таблица" -#: sql_help.c:3735 +#: sql_help.c:3739 msgid "timezone" msgstr "чаÑовой_поÑÑ" -#: sql_help.c:3780 +#: sql_help.c:3784 msgid "snapshot_id" msgstr "код_Ñнимка" -#: sql_help.c:3965 +#: sql_help.c:3969 msgid "from_list" msgstr "ÑпиÑок_FROM" -#: sql_help.c:3996 +#: sql_help.c:4000 msgid "sort_expression" msgstr "выражение_Ñортировки" -#: sql_help.c:4123 sql_help.c:4863 +#: sql_help.c:4127 sql_help.c:4867 msgid "abort the current transaction" msgstr "прервать текущую транзакцию" -#: sql_help.c:4128 +#: sql_help.c:4132 msgid "change the definition of an aggregate function" msgstr "изменить определение агрегатной функции" -#: sql_help.c:4133 +#: sql_help.c:4137 msgid "change the definition of a collation" msgstr "изменить определение правила Ñортировки" -#: sql_help.c:4138 +#: sql_help.c:4142 msgid "change the definition of a conversion" msgstr "изменить определение преобразованиÑ" -#: sql_help.c:4143 +#: sql_help.c:4147 msgid "change a database" msgstr "изменить атрибуты базы данных" -#: sql_help.c:4148 +#: sql_help.c:4152 msgid "define default access privileges" msgstr "определить права доÑтупа по умолчанию" -#: sql_help.c:4153 +#: sql_help.c:4157 msgid "change the definition of a domain" msgstr "изменить определение домена" -#: sql_help.c:4158 +#: sql_help.c:4162 msgid "change the definition of an event trigger" msgstr "изменить определение Ñобытийного триггера" -#: sql_help.c:4163 +#: sql_help.c:4167 msgid "change the definition of an extension" msgstr "изменить определение раÑширениÑ" -#: sql_help.c:4168 +#: sql_help.c:4172 msgid "change the definition of a foreign-data wrapper" msgstr "изменить определение обёртки Ñторонних данных" -#: sql_help.c:4173 +#: sql_help.c:4177 msgid "change the definition of a foreign table" msgstr "изменить определение Ñторонней таблицы" -#: sql_help.c:4178 +#: sql_help.c:4182 msgid "change the definition of a function" msgstr "изменить определение функции" -#: sql_help.c:4183 +#: sql_help.c:4187 msgid "change role name or membership" msgstr "изменить Ð¸Ð¼Ñ Ñ€Ð¾Ð»Ð¸ или членÑтво" -#: sql_help.c:4188 +#: sql_help.c:4192 msgid "change the definition of an index" msgstr "изменить определение индекÑа" -#: sql_help.c:4193 +#: sql_help.c:4197 msgid "change the definition of a procedural language" msgstr "изменить определение процедурного Ñзыка" -#: sql_help.c:4198 +#: sql_help.c:4202 msgid "change the definition of a large object" msgstr "изменить определение большого объекта" -#: sql_help.c:4203 +#: sql_help.c:4207 msgid "change the definition of a materialized view" msgstr "изменить определение материализованного предÑтавлениÑ" -#: sql_help.c:4208 +#: sql_help.c:4212 msgid "change the definition of an operator" msgstr "изменить определение оператора" -#: sql_help.c:4213 +#: sql_help.c:4217 msgid "change the definition of an operator class" msgstr "изменить определение клаÑÑа операторов" -#: sql_help.c:4218 +#: sql_help.c:4222 msgid "change the definition of an operator family" msgstr "изменить определение ÑемейÑтва операторов" -#: sql_help.c:4223 +#: sql_help.c:4227 msgid "change the definition of a row level security policy" msgstr "изменить определение политики безопаÑноÑти на уровне Ñтрок" -#: sql_help.c:4228 sql_help.c:4298 +#: sql_help.c:4232 sql_help.c:4302 msgid "change a database role" msgstr "изменить роль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð‘Ð”" -#: sql_help.c:4233 +#: sql_help.c:4237 msgid "change the definition of a rule" msgstr "изменить определение правила" -#: sql_help.c:4238 +#: sql_help.c:4242 msgid "change the definition of a schema" msgstr "изменить определение Ñхемы" -#: sql_help.c:4243 +#: sql_help.c:4247 msgid "change the definition of a sequence generator" msgstr "изменить определение генератора поÑледовательноÑти" -#: sql_help.c:4248 +#: sql_help.c:4252 msgid "change the definition of a foreign server" msgstr "изменить определение Ñтороннего Ñервера" -#: sql_help.c:4253 +#: sql_help.c:4257 msgid "change a server configuration parameter" msgstr "изменить параметр конфигурации Ñервера" -#: sql_help.c:4258 +#: sql_help.c:4262 msgid "change the definition of a table" msgstr "изменить определение таблицы" -#: sql_help.c:4263 +#: sql_help.c:4267 msgid "change the definition of a tablespace" msgstr "изменить определение табличного проÑтранÑтва" -#: sql_help.c:4268 +#: sql_help.c:4272 msgid "change the definition of a text search configuration" msgstr "изменить определение конфигурации текÑтового поиÑка" -#: sql_help.c:4273 +#: sql_help.c:4277 msgid "change the definition of a text search dictionary" msgstr "изменить определение ÑÐ»Ð¾Ð²Ð°Ñ€Ñ Ñ‚ÐµÐºÑтового поиÑка" -#: sql_help.c:4278 +#: sql_help.c:4282 msgid "change the definition of a text search parser" msgstr "изменить определение анализатора текÑтового поиÑка" -#: sql_help.c:4283 +#: sql_help.c:4287 msgid "change the definition of a text search template" msgstr "изменить определение шаблона текÑтового поиÑка" -#: sql_help.c:4288 +#: sql_help.c:4292 msgid "change the definition of a trigger" msgstr "изменить определение триггера" -#: sql_help.c:4293 +#: sql_help.c:4297 msgid "change the definition of a type" msgstr "изменить определение типа" -#: sql_help.c:4303 +#: sql_help.c:4307 msgid "change the definition of a user mapping" msgstr "изменить ÑопоÑтавление пользователей" -#: sql_help.c:4308 +#: sql_help.c:4312 msgid "change the definition of a view" msgstr "изменить определение предÑтавлениÑ" -#: sql_help.c:4313 +#: sql_help.c:4317 msgid "collect statistics about a database" msgstr "Ñобрать ÑтатиÑтику о базе данных" -#: sql_help.c:4318 sql_help.c:4928 +#: sql_help.c:4322 sql_help.c:4932 msgid "start a transaction block" msgstr "начать транзакцию" -#: sql_help.c:4323 +#: sql_help.c:4327 msgid "force a transaction log checkpoint" -msgstr "отметить контрольную точку в журнале транзакций" +msgstr "произвеÑти контрольную точку в журнале транзакций" -#: sql_help.c:4328 +#: sql_help.c:4332 msgid "close a cursor" msgstr "закрыть курÑор" -#: sql_help.c:4333 +#: sql_help.c:4337 msgid "cluster a table according to an index" msgstr "перегруппировать таблицу по индекÑу" -#: sql_help.c:4338 +#: sql_help.c:4342 msgid "define or change the comment of an object" msgstr "задать или изменить комментарий объекта" -#: sql_help.c:4343 sql_help.c:4763 +#: sql_help.c:4347 sql_help.c:4767 msgid "commit the current transaction" msgstr "зафикÑировать текущую транзакцию" -#: sql_help.c:4348 +#: sql_help.c:4352 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "зафикÑировать транзакцию, ранее подготовленную Ð´Ð»Ñ Ð´Ð²ÑƒÑ…Ñ„Ð°Ð·Ð½Ð¾Ð¹ фикÑации" -#: sql_help.c:4353 +#: sql_help.c:4357 msgid "copy data between a file and a table" msgstr "импорт/ÑкÑпорт данных в файл" -#: sql_help.c:4358 +#: sql_help.c:4362 msgid "define a new access method" msgstr "Ñоздать новый метод доÑтупа" -#: sql_help.c:4363 +#: sql_help.c:4367 msgid "define a new aggregate function" msgstr "Ñоздать агрегатную функцию" -#: sql_help.c:4368 +#: sql_help.c:4372 msgid "define a new cast" msgstr "Ñоздать приведение типов" -#: sql_help.c:4373 +#: sql_help.c:4377 msgid "define a new collation" msgstr "Ñоздать правило Ñортировки" -#: sql_help.c:4378 +#: sql_help.c:4382 msgid "define a new encoding conversion" msgstr "Ñоздать преобразование кодировки" -#: sql_help.c:4383 +#: sql_help.c:4387 msgid "create a new database" msgstr "Ñоздать базу данных" -#: sql_help.c:4388 +#: sql_help.c:4392 msgid "define a new domain" msgstr "Ñоздать домен" -#: sql_help.c:4393 +#: sql_help.c:4397 msgid "define a new event trigger" msgstr "Ñоздать Ñобытийный триггер" -#: sql_help.c:4398 +#: sql_help.c:4402 msgid "install an extension" msgstr "уÑтановить раÑширение" -#: sql_help.c:4403 +#: sql_help.c:4407 msgid "define a new foreign-data wrapper" msgstr "Ñоздать обёртку Ñторонних данных" -#: sql_help.c:4408 +#: sql_help.c:4412 msgid "define a new foreign table" msgstr "Ñоздать Ñтороннюю таблицу" -#: sql_help.c:4413 +#: sql_help.c:4417 msgid "define a new function" msgstr "Ñоздать функцию" -#: 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 "Ñоздать роль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð‘Ð”" -#: sql_help.c:4423 +#: sql_help.c:4427 msgid "define a new index" msgstr "Ñоздать индекÑ" -#: sql_help.c:4428 +#: sql_help.c:4432 msgid "define a new procedural language" msgstr "Ñоздать процедурный Ñзык" -#: sql_help.c:4433 +#: sql_help.c:4437 msgid "define a new materialized view" msgstr "Ñоздать материализованное предÑтавление" -#: sql_help.c:4438 +#: sql_help.c:4442 msgid "define a new operator" msgstr "Ñоздать оператор" -#: sql_help.c:4443 +#: sql_help.c:4447 msgid "define a new operator class" msgstr "Ñоздать клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð²" -#: sql_help.c:4448 +#: sql_help.c:4452 msgid "define a new operator family" msgstr "Ñоздать ÑемейÑтво операторов" -#: sql_help.c:4453 +#: sql_help.c:4457 msgid "define a new row level security policy for a table" msgstr "Ñоздать новую политику безопаÑноÑти на уровне Ñтрок Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹" -#: sql_help.c:4463 +#: sql_help.c:4467 msgid "define a new rewrite rule" msgstr "Ñоздать правило перезапиÑи" -#: sql_help.c:4468 +#: sql_help.c:4472 msgid "define a new schema" msgstr "Ñоздать Ñхему" -#: sql_help.c:4473 +#: sql_help.c:4477 msgid "define a new sequence generator" msgstr "Ñоздать генератор поÑледовательноÑтей" -#: sql_help.c:4478 +#: sql_help.c:4482 msgid "define a new foreign server" msgstr "Ñоздать Ñторонний Ñервер" -#: sql_help.c:4483 +#: sql_help.c:4487 msgid "define a new table" msgstr "Ñоздать таблицу" -#: 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 "Ñоздать таблицу из результатов запроÑа" -#: sql_help.c:4493 +#: sql_help.c:4497 msgid "define a new tablespace" msgstr "Ñоздать табличное проÑтранÑтво" -#: sql_help.c:4498 +#: sql_help.c:4502 msgid "define a new text search configuration" msgstr "Ñоздать конфигурацию текÑтового поиÑка" -#: sql_help.c:4503 +#: sql_help.c:4507 msgid "define a new text search dictionary" msgstr "Ñоздать Ñловарь текÑтового поиÑка" -#: sql_help.c:4508 +#: sql_help.c:4512 msgid "define a new text search parser" msgstr "Ñоздать анализатор текÑтового поиÑка" -#: sql_help.c:4513 +#: sql_help.c:4517 msgid "define a new text search template" msgstr "Ñоздать шаблон текÑтового поиÑка" -#: sql_help.c:4518 +#: sql_help.c:4522 msgid "define a new transform" msgstr "Ñоздать преобразование" -#: sql_help.c:4523 +#: sql_help.c:4527 msgid "define a new trigger" msgstr "Ñоздать триггер" -#: sql_help.c:4528 +#: sql_help.c:4532 msgid "define a new data type" msgstr "Ñоздать тип данных" -#: sql_help.c:4538 +#: sql_help.c:4542 msgid "define a new mapping of a user to a foreign server" msgstr "Ñоздать ÑопоÑтавление Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ñтороннего Ñервера" -#: sql_help.c:4543 +#: sql_help.c:4547 msgid "define a new view" msgstr "Ñоздать предÑтавление" -#: sql_help.c:4548 +#: sql_help.c:4552 msgid "deallocate a prepared statement" msgstr "оÑвободить подготовленный оператор" -#: sql_help.c:4553 +#: sql_help.c:4557 msgid "define a cursor" msgstr "Ñоздать курÑор" -#: sql_help.c:4558 +#: sql_help.c:4562 msgid "delete rows of a table" msgstr "удалить запиÑи таблицы" -#: sql_help.c:4563 +#: sql_help.c:4567 msgid "discard session state" msgstr "очиÑтить ÑоÑтоÑние ÑеанÑа" -#: sql_help.c:4568 +#: sql_help.c:4572 msgid "execute an anonymous code block" msgstr "выполнить анонимный блок кода" -#: sql_help.c:4573 +#: sql_help.c:4577 msgid "remove an access method" msgstr "удалить метод доÑтупа" -#: sql_help.c:4578 +#: sql_help.c:4582 msgid "remove an aggregate function" msgstr "удалить агрегатную функцию" -#: sql_help.c:4583 +#: sql_help.c:4587 msgid "remove a cast" msgstr "удалить приведение типа" -#: sql_help.c:4588 +#: sql_help.c:4592 msgid "remove a collation" msgstr "удалить правило Ñортировки" -#: sql_help.c:4593 +#: sql_help.c:4597 msgid "remove a conversion" msgstr "удалить преобразование" -#: sql_help.c:4598 +#: sql_help.c:4602 msgid "remove a database" msgstr "удалить базу данных" -#: sql_help.c:4603 +#: sql_help.c:4607 msgid "remove a domain" msgstr "удалить домен" -#: sql_help.c:4608 +#: sql_help.c:4612 msgid "remove an event trigger" msgstr "удалить Ñобытийный триггер" -#: sql_help.c:4613 +#: sql_help.c:4617 msgid "remove an extension" msgstr "удалить раÑширение" -#: sql_help.c:4618 +#: sql_help.c:4622 msgid "remove a foreign-data wrapper" msgstr "удалить обёртку Ñторонних данных" -#: sql_help.c:4623 +#: sql_help.c:4627 msgid "remove a foreign table" msgstr "удалить Ñтороннюю таблицу" -#: sql_help.c:4628 +#: sql_help.c:4632 msgid "remove a function" msgstr "удалить функцию" -#: 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 "удалить роль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð‘Ð”" -#: sql_help.c:4638 +#: sql_help.c:4642 msgid "remove an index" msgstr "удалить индекÑ" -#: sql_help.c:4643 +#: sql_help.c:4647 msgid "remove a procedural language" msgstr "удалить процедурный Ñзык" -#: sql_help.c:4648 +#: sql_help.c:4652 msgid "remove a materialized view" msgstr "удалить материализованное предÑтавление" -#: sql_help.c:4653 +#: sql_help.c:4657 msgid "remove an operator" msgstr "удалить оператор" -#: sql_help.c:4658 +#: sql_help.c:4662 msgid "remove an operator class" msgstr "удалить клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð²" -#: sql_help.c:4663 +#: sql_help.c:4667 msgid "remove an operator family" msgstr "удалить ÑемейÑтво операторов" -#: sql_help.c:4668 +#: sql_help.c:4672 msgid "remove database objects owned by a database role" msgstr "удалить объекты базы данных, принадлежащие роли" -#: sql_help.c:4673 +#: sql_help.c:4677 msgid "remove a row level security policy from a table" msgstr "удалить политику безопаÑноÑти на уровне Ñтрок из таблицы" -#: sql_help.c:4683 +#: sql_help.c:4687 msgid "remove a rewrite rule" msgstr "удалить правило перезапиÑи" -#: sql_help.c:4688 +#: sql_help.c:4692 msgid "remove a schema" msgstr "удалить Ñхему" -#: sql_help.c:4693 +#: sql_help.c:4697 msgid "remove a sequence" msgstr "удалить поÑледовательноÑть" -#: sql_help.c:4698 +#: sql_help.c:4702 msgid "remove a foreign server descriptor" msgstr "удалить опиÑание Ñтороннего Ñервера" -#: sql_help.c:4703 +#: sql_help.c:4707 msgid "remove a table" msgstr "удалить таблицу" -#: sql_help.c:4708 +#: sql_help.c:4712 msgid "remove a tablespace" msgstr "удалить табличное проÑтранÑтво" -#: sql_help.c:4713 +#: sql_help.c:4717 msgid "remove a text search configuration" msgstr "удалить конфигурацию текÑтового поиÑка" -#: sql_help.c:4718 +#: sql_help.c:4722 msgid "remove a text search dictionary" msgstr "удалить Ñловарь текÑтового поиÑка" -#: sql_help.c:4723 +#: sql_help.c:4727 msgid "remove a text search parser" msgstr "удалить анализатор текÑтового поиÑка" -#: sql_help.c:4728 +#: sql_help.c:4732 msgid "remove a text search template" msgstr "удалить шаблон текÑтового поиÑка" -#: sql_help.c:4733 +#: sql_help.c:4737 msgid "remove a transform" msgstr "удалить преобразование" -#: sql_help.c:4738 +#: sql_help.c:4742 msgid "remove a trigger" msgstr "удалить триггер" -#: sql_help.c:4743 +#: sql_help.c:4747 msgid "remove a data type" msgstr "удалить тип данных" -#: sql_help.c:4753 +#: sql_help.c:4757 msgid "remove a user mapping for a foreign server" msgstr "удалить ÑопоÑтавление Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ñтороннего Ñервера" -#: sql_help.c:4758 +#: sql_help.c:4762 msgid "remove a view" msgstr "удалить предÑтавление" -#: sql_help.c:4768 +#: sql_help.c:4772 msgid "execute a prepared statement" msgstr "выполнить подготовленный оператор" -#: sql_help.c:4773 +#: sql_help.c:4777 msgid "show the execution plan of a statement" msgstr "показать план Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð°" -#: sql_help.c:4778 +#: sql_help.c:4782 msgid "retrieve rows from a query using a cursor" msgstr "получить результат запроÑа через курÑор" -#: sql_help.c:4783 +#: sql_help.c:4787 msgid "define access privileges" msgstr "определить права доÑтупа" -#: sql_help.c:4788 +#: sql_help.c:4792 msgid "import table definitions from a foreign server" msgstr "импортировать Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ† Ñо Ñтороннего Ñервера" -#: sql_help.c:4793 +#: sql_help.c:4797 msgid "create new rows in a table" msgstr "добавить Ñтроки в таблицу" -#: sql_help.c:4798 +#: sql_help.c:4802 msgid "listen for a notification" msgstr "ожидать уведомлениÑ" -#: sql_help.c:4803 +#: sql_help.c:4807 msgid "load a shared library file" msgstr "загрузить файл разделÑемой библиотеки" -#: sql_help.c:4808 +#: sql_help.c:4812 msgid "lock a table" msgstr "заблокировать таблицу" -#: sql_help.c:4813 +#: sql_help.c:4817 msgid "position a cursor" msgstr "уÑтановить курÑор" -#: sql_help.c:4818 +#: sql_help.c:4822 msgid "generate a notification" msgstr "Ñгенерировать уведомление" -#: sql_help.c:4823 +#: sql_help.c:4827 msgid "prepare a statement for execution" msgstr "подготовить оператор Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ" -#: sql_help.c:4828 +#: sql_help.c:4832 msgid "prepare the current transaction for two-phase commit" msgstr "подготовить текущую транзакцию Ð´Ð»Ñ Ð´Ð²ÑƒÑ…Ñ„Ð°Ð·Ð½Ð¾Ð¹ фикÑации" -#: sql_help.c:4833 +#: sql_help.c:4837 msgid "change the ownership of database objects owned by a database role" msgstr "изменить владельца объектов БД, принадлежащих заданной роли" -#: sql_help.c:4838 +#: sql_help.c:4842 msgid "replace the contents of a materialized view" msgstr "заменить Ñодержимое материализованного предÑтавлениÑ" -#: sql_help.c:4843 +#: sql_help.c:4847 msgid "rebuild indexes" msgstr "переÑтроить индекÑÑ‹" -#: sql_help.c:4848 +#: sql_help.c:4852 msgid "destroy a previously defined savepoint" msgstr "удалить ранее определённую точку ÑохранениÑ" -#: sql_help.c:4853 +#: sql_help.c:4857 msgid "restore the value of a run-time parameter to the default value" msgstr "воÑÑтановить иÑходное значение параметра выполнениÑ" -#: sql_help.c:4858 +#: sql_help.c:4862 msgid "remove access privileges" msgstr "удалить права доÑтупа" -#: sql_help.c:4868 +#: sql_help.c:4872 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "отменить транзакцию, подготовленную ранее Ð´Ð»Ñ Ð´Ð²ÑƒÑ…Ñ„Ð°Ð·Ð½Ð¾Ð¹ фикÑации" -#: sql_help.c:4873 +#: sql_help.c:4877 msgid "roll back to a savepoint" msgstr "откатитьÑÑ Ðº точке ÑохранениÑ" -#: sql_help.c:4878 +#: sql_help.c:4882 msgid "define a new savepoint within the current transaction" msgstr "определить новую точку ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² текущей транзакции" -#: sql_help.c:4883 +#: sql_help.c:4887 msgid "define or change a security label applied to an object" msgstr "задать или изменить метку безопаÑноÑти, применённую к объекту" -#: 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 "выбрать Ñтроки из таблицы или предÑтавлениÑ" -#: sql_help.c:4898 +#: sql_help.c:4902 msgid "change a run-time parameter" msgstr "изменить параметр выполнениÑ" -#: sql_help.c:4903 +#: sql_help.c:4907 msgid "set constraint check timing for the current transaction" msgstr "уÑтановить Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ ограничений Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ транзакции" -#: sql_help.c:4908 +#: sql_help.c:4912 msgid "set the current user identifier of the current session" msgstr "задать идентификатор текущего Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² текущем ÑеанÑе" -#: sql_help.c:4913 +#: sql_help.c:4917 msgid "" "set the session user identifier and the current user identifier of the " "current session" @@ -5530,31 +5542,31 @@ msgstr "" "задать идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑеанÑа и идентификатор текущего " "Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² текущем ÑеанÑе" -#: sql_help.c:4918 +#: sql_help.c:4922 msgid "set the characteristics of the current transaction" msgstr "задать ÑвойÑтва текущей транзакции" -#: sql_help.c:4923 +#: sql_help.c:4927 msgid "show the value of a run-time parameter" msgstr "показать значение параметра выполнениÑ" -#: sql_help.c:4938 +#: sql_help.c:4942 msgid "empty a table or set of tables" msgstr "опуÑтошить таблицу или набор таблиц" -#: sql_help.c:4943 +#: sql_help.c:4947 msgid "stop listening for a notification" msgstr "прекратить ожидание уведомлений" -#: sql_help.c:4948 +#: sql_help.c:4952 msgid "update rows of a table" msgstr "изменить Ñтроки таблицы" -#: sql_help.c:4953 +#: sql_help.c:4957 msgid "garbage-collect and optionally analyze a database" msgstr "произвеÑти Ñборку муÑора и проанализировать базу данных" -#: sql_help.c:4958 +#: sql_help.c:4962 msgid "compute a set of rows" msgstr "получить набор Ñтрок" @@ -5613,7 +5625,7 @@ msgstr "%s: не удалоÑÑŒ найти Ñвой иÑполнÑемый фа msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n" msgstr "нераÑпознанное значение \"%s\" Ð´Ð»Ñ \"%s\"; подразумеваетÑÑ \"%s\"\n" -#: tab-complete.c:3743 +#: tab-complete.c:3742 #, c-format msgid "" "tab completion query failed: %s\n" diff --git a/src/bin/psql/po/sv.po b/src/bin/psql/po/sv.po new file mode 100644 index 0000000000..3f9f2a8365 --- /dev/null +++ b/src/bin/psql/po/sv.po @@ -0,0 +1,5542 @@ +# Swedish message translation file for psql +# Peter Eisentraut , 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 4fa21050a5..68a2ba27ae 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -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 */ @@ -3077,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/ja.po b/src/bin/scripts/po/ja.po index 6764cab974..d673020e5a 100644 --- a/src/bin/scripts/po/ja.po +++ b/src/bin/scripts/po/ja.po @@ -3,11 +3,11 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.6\n" +"Project-Id-Version: PostgreSQL 9.6.3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 17:10+0900\n" +"POT-Creation-Date: 2017-04-04 09:37+0900\n" "PO-Revision-Date: 2013-08-18 17:27+0900\n" -"Last-Translator: IDERIHA Takeshi \n" +"Last-Translator: Daisuke Higuchi \n" "Language-Team: jpug-doc \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -47,22 +47,22 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu 行)" msgstr[1] "(%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" @@ -72,14 +72,14 @@ msgstr "出力フォーマットãŒç„¡åŠ¹ï¼ˆå†…éƒ¨ã‚¨ãƒ©ãƒ¼ï¼‰ï¼š%d" #: 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" @@ -118,19 +118,19 @@ msgstr "%sã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã§äº‹å‰ã«ã‚¯ãƒ©ã‚¹ã‚¿åŒ–ã•れã¦ã„ã‚‹ã™ #: 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" @@ -184,7 +184,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" @@ -194,36 +194,36 @@ 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 +#: reindexdb.c:418 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=DBNAME 別ã®ä¿å®ˆç”¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’指定ã™ã‚‹\n" @@ -239,7 +239,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" @@ -748,7 +748,7 @@ 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 @@ -962,149 +962,150 @@ 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: analyze ã®ã¿ã‚’実行ã™ã‚‹å ´åˆ \"%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: 全データベースã¨ç‰¹å®šã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’åŒæ™‚ã« vacuum ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" -#: vacuumdb.c:263 +#: vacuumdb.c:267 #, c-format msgid "%s: cannot vacuum specific table(s) in all databases\n" msgstr "%s: 全データベースã®ã†ã¡ç‰¹å®šã®ãƒ†ãƒ¼ãƒ–ルを vacuum ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\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\"ã‚’ vacuum ã—ã¦ã„ã¾ã™\n" -#: vacuumdb.c:698 +#: 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:701 vacuumdb.c:818 +#: vacuumdb.c:705 vacuumdb.c:822 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" msgstr "%s: データベース\"%s\"ã® vacuum ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#: vacuumdb.c:932 +#: vacuumdb.c:936 #, c-format -#| msgid "%s: invalid argument: %s\n" 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" "\n" msgstr "%sã¯PostgreSQLデータベースを clean ãŠã‚ˆã³ analyse ã—ã¾ã™ã€‚\n" -#: vacuumdb.c:945 +#: vacuumdb.c:949 #, c-format msgid " -a, --all vacuum all databases\n" msgstr " -a, --all 全データベースを vacuum ã—ã¾ã™\n" -#: vacuumdb.c:946 +#: vacuumdb.c:950 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" msgstr " -d, --dbname=データベースå vacuum ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å\n" -#: vacuumdb.c:947 +#: vacuumdb.c:951 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo サーãƒã«é€ã‚‰ã‚Œã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’表示ã—ã¾ã™\n" -#: vacuumdb.c:948 +#: vacuumdb.c:952 #, c-format msgid " -f, --full do full vacuuming\n" msgstr " -f, --full full vacuum を行ãªã„ã¾ã™\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 vacuum\n" msgstr " -j, --jobs=NUM ãƒã‚­ãƒ¥ãƒ¼ãƒ æ™‚ã«æŒ‡å®šã—ãŸåŒæ™‚接続数を使用\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='TABLE[(COLUMNS)]' 指定ã—ãŸãƒ†ãƒ¼ãƒ–ル(複数å¯)ã®ã¿ã‚’ vacuum ã—ã¾ã™\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 vacuum\n" msgstr " -Z, --analyze-only 最é©åŒ–ã®ãŸã‚ã®æƒ…å ±ã ã‘ã‚’æ›´æ–°ã—ã¾ã™; ãƒã‚­ãƒ¥ãƒ¼ãƒ ã¯ã‚りã¾ã›ã‚“\n" -#: vacuumdb.c:957 +#: 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: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" @@ -1113,46 +1114,3 @@ msgstr "" "\n" "詳細㯠SQL コマンド㮠VACUUM ã®èª¬æ˜Žã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n" -#~ msgid "%s: could not obtain information about current user: %s\n" -#~ msgstr "%s: ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶ã«é–¢ã™ã‚‹æƒ…報をå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#~ msgid "%s: could not get current user name: %s\n" -#~ msgstr "%s: ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶åã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#~ msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" -#~ msgstr "%s: analyze ã®ã¿ã‚’実行ã™ã‚‹å ´åˆ \"freeze\" ã¯ä½¿ãˆã¾ã›ã‚“\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/ru.po b/src/bin/scripts/po/ru.po index b54aac7b42..d8a146482d 100644 --- a/src/bin/scripts/po/ru.po +++ b/src/bin/scripts/po/ru.po @@ -3,7 +3,7 @@ # 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 "" 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/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/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 726f0f3f88..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 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/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/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/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 2163187082..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.2" +#define PACKAGE_STRING "PostgreSQL 9.6.5" /* Define to the version of this package. */ -#define PACKAGE_VERSION "9.6.2" +#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.2" +#define PG_VERSION "9.6.5" /* PostgreSQL version as a number */ -#define PG_VERSION_NUM 90602 +#define PG_VERSION_NUM 90605 /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "postgresql" 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/replication/logical.h b/src/include/replication/logical.h index 15f4e53685..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); 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/procarray.h b/src/include/storage/procarray.h index ecc3c4a4f6..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); 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/utils/acl.h b/src/include/utils/acl.h index 5a4f1714f3..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 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/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/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/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/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/preproc/ecpg.header b/src/interfaces/ecpg/preproc/ecpg.header index 2562366bbe..a52da01b1f 100644 --- a/src/interfaces/ecpg/preproc/ecpg.header +++ b/src/interfaces/ecpg/preproc/ecpg.header @@ -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 1c108795de..d273070dab 100644 --- a/src/interfaces/ecpg/preproc/ecpg.trailer +++ b/src/interfaces/ecpg/preproc/ecpg.trailer @@ -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 { 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/parse.pl b/src/interfaces/ecpg/preproc/parse.pl index f132ad7fc3..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' diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l index 3601544da2..07c722d1d7 100644 --- a/src/interfaces/ecpg/preproc/pgc.l +++ b/src/interfaces/ecpg/preproc/pgc.l @@ -358,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. 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/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/pt_BR.po b/src/interfaces/ecpg/preproc/po/pt_BR.po index 88d065e8e6..d32f842dbf 100644 --- a/src/interfaces/ecpg/preproc/po/pt_BR.po +++ b/src/interfaces/ecpg/preproc/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. # Fernando Ike de Oliveira , 2009. -# Euler Taveira de Oliveira , 2010-2016. +# Euler Taveira de Oliveira , 2010-2017. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-10-25 16:32-0300\n" +"POT-Creation-Date: 2017-08-06 01:59-0300\n" "PO-Revision-Date: 2009-02-09 12:59-0200\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -28,7 +28,7 @@ msgstr "variável \"%s\" deve ter um tipo númerico" msgid "descriptor \"%s\" does not exist" msgstr "descritor \"%s\" não existe" -#: descriptor.c:161 descriptor.c:212 +#: descriptor.c:161 descriptor.c:213 #, c-format msgid "descriptor header item \"%d\" does not exist" msgstr "item do cabeçalho do descritor \"%d\" não existe" @@ -43,12 +43,12 @@ msgstr "nullable é sempre 1" msgid "key_member is always 0" msgstr "key_member é sempre 0" -#: descriptor.c:279 +#: descriptor.c:280 #, c-format msgid "descriptor item \"%s\" is not implemented" msgstr "item do descritor \"%s\" não está implementado" -#: descriptor.c:289 +#: descriptor.c:290 #, c-format msgid "descriptor item \"%s\" cannot be set" msgstr "item do descritor \"%s\" não pode ser definido" @@ -59,7 +59,7 @@ msgid "" "%s is the PostgreSQL embedded SQL preprocessor for C programs.\n" "\n" msgstr "" -"%s é o pré-processador SQL embutido do PostgeSQL para programas em C.\n" +"%s é o pré-processador SQL embutido do PostgreSQL para programas em C.\n" "\n" #: ecpg.c:37 @@ -180,7 +180,7 @@ msgstr "" msgid "%s: could not locate my own executable path\n" msgstr "%s: não pôde localizar meu próprio caminho executável\n" -#: ecpg.c:175 ecpg.c:326 ecpg.c:336 +#: ecpg.c:175 ecpg.c:327 ecpg.c:337 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: não pôde abrir arquivo \"%s\": %s\n" @@ -215,112 +215,112 @@ msgstr "fim da lista de pesquisa\n" msgid "%s: no input files specified\n" msgstr "%s: nenhum arquivo de entrada foi especificado\n" -#: ecpg.c:459 +#: ecpg.c:460 #, c-format msgid "cursor \"%s\" has been declared but not opened" msgstr "cursor \"%s\" foi declarado mas não foi aberto" -#: ecpg.c:472 preproc.y:127 +#: ecpg.c:473 preproc.y:127 #, c-format msgid "could not remove output file \"%s\"\n" msgstr "não pôde remover arquivo de saída \"%s\"\n" -#: pgc.l:440 +#: pgc.l:432 #, c-format msgid "unterminated /* comment" msgstr "comentário /* não foi terminado" -#: pgc.l:453 +#: pgc.l:445 #, c-format msgid "invalid bit string literal" msgstr "cadeia de bits inválida" -#: pgc.l:462 +#: pgc.l:454 #, c-format msgid "unterminated bit string literal" msgstr "cadeia de bits não foi terminada" -#: pgc.l:478 +#: pgc.l:470 #, c-format msgid "unterminated hexadecimal string literal" msgstr "cadeia de caracteres hexadecimal não foi terminada" -#: pgc.l:556 +#: pgc.l:548 #, c-format msgid "unterminated quoted string" msgstr "cadeia de caracteres entre aspas não foi terminada" -#: pgc.l:613 pgc.l:626 +#: pgc.l:606 pgc.l:619 #, c-format msgid "zero-length delimited identifier" msgstr "identificador delimitado tem tamanho zero" -#: pgc.l:634 +#: pgc.l:627 #, c-format msgid "unterminated quoted identifier" msgstr "identificador entre aspas não foi terminado" -#: pgc.l:889 +#: pgc.l:882 #, c-format msgid "nested /* ... */ comments" msgstr "comentários /* ... */ aninhados" -#: pgc.l:982 +#: pgc.l:975 #, c-format msgid "missing identifier in EXEC SQL UNDEF command" msgstr "faltando identificador no comando 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 "faltando correspondente \"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 "faltando \"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 "mais de um 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 não tem correspondente" -#: pgc.l:1135 +#: pgc.l:1128 #, c-format msgid "too many nested EXEC SQL IFDEF conditions" msgstr "muitas condições EXEC SQL IFDEF aninhadas" -#: pgc.l:1168 +#: pgc.l:1161 #, c-format msgid "missing identifier in EXEC SQL IFDEF command" msgstr "faltando identificador no comando EXEC SQL IFDEF" -#: pgc.l:1177 +#: pgc.l:1170 #, c-format msgid "missing identifier in EXEC SQL DEFINE command" msgstr "faltando identificador no comando EXEC SQL IFDEF" -#: pgc.l:1210 +#: pgc.l:1203 #, c-format msgid "syntax error in EXEC SQL INCLUDE command" msgstr "erro de sintaxe no comando EXEC SQL INCLUDE" -#: pgc.l:1259 +#: pgc.l:1252 #, c-format msgid "internal error: unreachable state; please report this to " msgstr "erro interno: estado inacessível; por favor relato isso a " -#: pgc.l:1383 +#: pgc.l:1376 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" msgstr "Erro: caminho de inclusão \"%s/%s\" é muito longo na linha %d, ignorando\n" -#: pgc.l:1406 +#: pgc.l:1399 #, c-format msgid "could not open include file \"%s\" on line %d" msgstr "não pôde abrir arquivo de inclusão \"%s\" na linha %d" @@ -354,12 +354,12 @@ msgstr "inicializador não é permitido na definição do tipo" msgid "type name \"string\" is reserved in Informix mode" msgstr "nome de tipo \"string\" é reservado no modo Informix" -#: preproc.y:546 preproc.y:14626 +#: preproc.y:546 preproc.y:14634 #, c-format msgid "type \"%s\" is already defined" msgstr "tipo \"%s\" já está definido" -#: preproc.y:570 preproc.y:15284 preproc.y:15604 variable.c:620 +#: preproc.y:570 preproc.y:15292 preproc.y:15612 variable.c:620 #, c-format msgid "multidimensional arrays for simple data types are not supported" msgstr "matrizes multidimensionais para tipo de dados simples não são suportadas" @@ -399,140 +399,140 @@ msgstr "opção AT não é permitida no comando VAR" msgid "AT option not allowed in WHENEVER statement" msgstr "opção AT não é permitida no comando WHENEVER" -#: 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 +#: preproc.y:2232 preproc.y:2237 preproc.y:2353 preproc.y:3763 preproc.y:5181 +#: preproc.y:5190 preproc.y:5474 preproc.y:6910 preproc.y:8148 preproc.y:8153 +#: preproc.y:10784 preproc.y:11401 #, c-format msgid "unsupported feature will be passed to server" msgstr "funcionalidade não suportada será enviada ao servidor" -#: preproc.y:2607 +#: preproc.y:2611 #, c-format msgid "SHOW ALL is not implemented" msgstr "SHOW ALL não está implementado" -#: preproc.y:3147 +#: preproc.y:3151 #, c-format msgid "COPY FROM STDIN is not implemented" msgstr "COPY FROM STDIN não está implementado" -#: preproc.y:9035 preproc.y:14215 +#: preproc.y:9043 preproc.y:14223 #, c-format msgid "using variable \"%s\" in different declare statements is not supported" msgstr "utilizar variável \"%s\" em comandos de declaração diferentes não é suportado" -#: preproc.y:9037 preproc.y:14217 +#: preproc.y:9045 preproc.y:14225 #, c-format msgid "cursor \"%s\" is already defined" msgstr "cursor \"%s\" já está definido" -#: preproc.y:9467 +#: preproc.y:9475 #, c-format msgid "no longer supported LIMIT #,# syntax passed to server" msgstr "sintaxe LIMIT #,# que não é suportada foi enviada ao servidor" -#: preproc.y:9775 preproc.y:9782 +#: preproc.y:9783 preproc.y:9790 #, c-format msgid "subquery in FROM must have an alias" msgstr "subconsulta no FROM deve ter um aliás" -#: preproc.y:13945 +#: preproc.y:13953 #, c-format msgid "CREATE TABLE AS cannot specify INTO" msgstr "CREATE TABLE AS não pode especificar INTO" -#: preproc.y:13981 +#: preproc.y:13989 #, c-format msgid "expected \"@\", found \"%s\"" msgstr "esperado \"@\", encontrado \"%s\"" -#: preproc.y:13993 +#: preproc.y:14001 #, c-format msgid "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are supported" msgstr "somente os protocolos \"tcp\" e \"unix\" e tipo banco de dados \"postgressql\" sãosuportados" -#: preproc.y:13996 +#: preproc.y:14004 #, c-format msgid "expected \"://\", found \"%s\"" msgstr "esperado \"://\", encontrado \"%s\"" -#: preproc.y:14001 +#: preproc.y:14009 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" msgstr "Soquetes de domínio Unix trabalham somente com \"localhost\" e não com \"%s\"" -#: preproc.y:14027 +#: preproc.y:14035 #, c-format msgid "expected \"postgresql\", found \"%s\"" msgstr "esperado \"postgresql\", encontrado \"%s\"" -#: preproc.y:14030 +#: preproc.y:14038 #, c-format msgid "invalid connection type: %s" msgstr "tipo de conexão inválido: %s" -#: preproc.y:14039 +#: preproc.y:14047 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" msgstr "esperado \"@\" ou \"://\", encontrado \"%s\"" -#: preproc.y:14114 preproc.y:14132 +#: preproc.y:14122 preproc.y:14140 #, c-format msgid "invalid data type" msgstr "tipo de dado inválido" -#: preproc.y:14143 preproc.y:14160 +#: preproc.y:14151 preproc.y:14168 #, c-format msgid "incomplete statement" msgstr "comando incompleto" -#: preproc.y:14146 preproc.y:14163 +#: preproc.y:14154 preproc.y:14171 #, c-format msgid "unrecognized token \"%s\"" msgstr "informação desconhecida \"%s\"" -#: preproc.y:14437 +#: preproc.y:14445 #, c-format msgid "only data types numeric and decimal have precision/scale argument" msgstr "somente os tipos de dados numeric e decimal possuem argumento de precisão/escala" -#: preproc.y:14449 +#: preproc.y:14457 #, c-format msgid "interval specification not allowed here" msgstr "especificação de intervalo não é permitida aqui" -#: preproc.y:14601 preproc.y:14653 +#: preproc.y:14609 preproc.y:14661 #, c-format msgid "too many levels in nested structure/union definition" msgstr "muitos níveis em definição aninhada de estrutura/união" -#: preproc.y:14792 +#: preproc.y:14800 #, c-format msgid "pointers to varchar are not implemented" msgstr "ponteiros para varchar não estão implentados" -#: preproc.y:14979 preproc.y:15004 +#: preproc.y:14987 preproc.y:15012 #, c-format msgid "using unsupported DESCRIBE statement" msgstr "utilizando comando DESCRIBE que não é suportado" -#: preproc.y:15251 +#: preproc.y:15259 #, c-format msgid "initializer not allowed in EXEC SQL VAR command" msgstr "inicilização não é permitido no comando EXEC SQL VAR" -#: preproc.y:15562 +#: preproc.y:15570 #, c-format msgid "arrays of indicators are not allowed on input" msgstr "matrizes do indicadores não são permitidas na entrada" -#: preproc.y:15783 +#: preproc.y:15791 #, c-format msgid "operator not allowed in variable definition" msgstr "operador não é permitido na definição da variável" #. translator: %s is typically the translation of "syntax error" -#: preproc.y:15821 +#: preproc.y:15829 #, c-format msgid "%s at or near \"%s\"" msgstr "%s em ou próximo a \"%s\"" diff --git a/src/interfaces/ecpg/preproc/po/ru.po b/src/interfaces/ecpg/preproc/po/ru.po index 854b6c9e19..138aaec01f 100644 --- a/src/interfaces/ecpg/preproc/po/ru.po +++ b/src/interfaces/ecpg/preproc/po/ru.po @@ -1,13 +1,13 @@ # Russian message translation file for ecpg # 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: ecpg (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-02-01 23:08+0000\n" +"POT-Creation-Date: 2017-08-17 17:47+0000\n" "PO-Revision-Date: 2016-11-24 16:01+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -253,67 +253,67 @@ msgstr "Ð¾Ð±Ð¾Ñ€Ð²Ð°Ð½Ð½Ð°Ñ ÑˆÐµÑÑ‚Ð½Ð°Ð´Ñ†Ð°Ñ‚ÐµÑ€Ð¸Ñ‡Ð½Ð°Ñ Ñтрока" msgid "unterminated quoted string" msgstr "Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ Ñтрока в кавычках" -#: pgc.l:605 pgc.l:618 +#: pgc.l:606 pgc.l:619 #, c-format msgid "zero-length delimited identifier" msgstr "пуÑтой идентификатор в кавычках" -#: pgc.l:626 +#: pgc.l:627 #, c-format msgid "unterminated quoted identifier" msgstr "незавершённый идентификатор в кавычках" -#: pgc.l:881 +#: pgc.l:882 #, c-format msgid "nested /* ... */ comments" msgstr "вложенные комментарии /* ... */" -#: pgc.l:974 +#: pgc.l:975 #, c-format msgid "missing identifier in EXEC SQL UNDEF command" msgstr "в команде EXEC SQL UNDEF отÑутÑтвует идентификатор" -#: pgc.l:1020 pgc.l:1034 +#: 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:1023 pgc.l:1036 pgc.l:1212 +#: pgc.l:1024 pgc.l:1037 pgc.l:1213 #, c-format msgid "missing \"EXEC SQL ENDIF;\"" msgstr "отÑутÑтвует \"EXEC SQL ENDIF;\"" -#: pgc.l:1052 pgc.l:1071 +#: pgc.l:1053 pgc.l:1072 #, c-format msgid "more than one EXEC SQL ELSE" msgstr "Ð½ÐµÐ¾Ð´Ð½Ð¾ÐºÑ€Ð°Ñ‚Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° EXEC SQL ELSE" -#: pgc.l:1093 pgc.l:1107 +#: pgc.l:1094 pgc.l:1108 #, c-format msgid "unmatched EXEC SQL ENDIF" msgstr "Ð½ÐµÐ¿Ð°Ñ€Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° EXEC SQL ENDIF" -#: pgc.l:1127 +#: pgc.l:1128 #, c-format msgid "too many nested EXEC SQL IFDEF conditions" msgstr "Ñлишком много вложенных уÑловий EXEC SQL IFDEF" -#: pgc.l:1160 +#: pgc.l:1161 #, c-format msgid "missing identifier in EXEC SQL IFDEF command" msgstr "в команде EXEC SQL IFDEF отÑутÑтвует идентификатор" -#: pgc.l:1169 +#: pgc.l:1170 #, c-format msgid "missing identifier in EXEC SQL DEFINE command" msgstr "в команде EXEC SQL DEFINE отÑутÑтвует идентификатор" -#: pgc.l:1202 +#: pgc.l:1203 #, c-format msgid "syntax error in EXEC SQL INCLUDE command" msgstr "ошибка ÑинтакÑиÑа в команде EXEC SQL INCLUDE" -#: pgc.l:1251 +#: pgc.l:1252 #, c-format msgid "" "internal error: unreachable state; please report this to " -#: pgc.l:1375 +#: pgc.l:1376 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" msgstr "" "Ошибка: путь включаемых файлов \"%s/%s\" в Ñтроке %d Ñлишком длинный, " "пропуÑкаетÑÑ\n" -#: pgc.l:1398 +#: pgc.l:1399 #, c-format msgid "could not open include file \"%s\" on line %d" msgstr "не удалоÑÑŒ открыть включаемый файл \"%s\" (Ñтрока %d)" @@ -363,100 +363,100 @@ msgstr "определение типа не может включать ини msgid "type name \"string\" is reserved in Informix mode" msgstr "Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð° \"string\" в режиме Informix зарезервировано" -#: preproc.y:546 preproc.y:14626 +#: preproc.y:546 preproc.y:14635 #, c-format msgid "type \"%s\" is already defined" msgstr "тип \"%s\" уже определён" -#: preproc.y:570 preproc.y:15284 preproc.y:15604 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 "многомерные маÑÑивы Ñ Ð¿Ñ€Ð¾Ñтыми типами данных не поддерживаютÑÑ" -#: preproc.y:1634 +#: preproc.y:1635 #, c-format msgid "AT option not allowed in CLOSE DATABASE statement" msgstr "оператор CLOSE DATABASE Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ AT не поддерживаетÑÑ" -#: preproc.y:1849 +#: preproc.y:1850 #, c-format msgid "AT option not allowed in CONNECT statement" msgstr "оператор CONNECT Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ AT не поддерживаетÑÑ" -#: preproc.y:1883 +#: preproc.y:1884 #, c-format msgid "AT option not allowed in DISCONNECT statement" msgstr "оператор DISCONNECT Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ AT не поддерживаетÑÑ" -#: preproc.y:1938 +#: preproc.y:1939 #, c-format msgid "AT option not allowed in SET CONNECTION statement" msgstr "оператор SET CONNECTION Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ AT не поддерживаетÑÑ" -#: preproc.y:1960 +#: preproc.y:1961 #, c-format msgid "AT option not allowed in TYPE statement" msgstr "оператор TYPE Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ AT не поддерживаетÑÑ" -#: preproc.y:1969 +#: preproc.y:1970 #, c-format msgid "AT option not allowed in VAR statement" msgstr "оператор VAR Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ AT не поддерживаетÑÑ" -#: preproc.y:1976 +#: preproc.y:1977 #, c-format msgid "AT option not allowed in WHENEVER statement" msgstr "оператор WHENEVER Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ AT не поддерживаетÑÑ" -#: 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 +#: 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 "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ передана Ñерверу" -#: preproc.y:2607 +#: preproc.y:2612 #, c-format msgid "SHOW ALL is not implemented" msgstr "SHOW ALL не реализовано" -#: preproc.y:3147 +#: preproc.y:3152 #, c-format msgid "COPY FROM STDIN is not implemented" msgstr "Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ COPY FROM STDIN не реализована" -#: preproc.y:9035 preproc.y:14215 +#: preproc.y:9044 preproc.y:14224 #, c-format msgid "using variable \"%s\" in different declare statements is not supported" msgstr "" "иÑпользование переменной \"%s\" в разных операторах DECLARE не поддерживаетÑÑ" -#: preproc.y:9037 preproc.y:14217 +#: preproc.y:9046 preproc.y:14226 #, c-format msgid "cursor \"%s\" is already defined" msgstr "курÑор \"%s\" уже определён" -#: preproc.y:9467 +#: preproc.y:9476 #, c-format msgid "no longer supported LIMIT #,# syntax passed to server" msgstr "не поддерживаемое более предложение LIMIT #,# передано на Ñервер" -#: preproc.y:9775 preproc.y:9782 +#: preproc.y:9784 preproc.y:9791 #, c-format msgid "subquery in FROM must have an alias" msgstr "Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð²Ð¾ FROM должен иметь пÑевдоним" -#: preproc.y:13945 +#: preproc.y:13954 #, c-format msgid "CREATE TABLE AS cannot specify INTO" msgstr "в CREATE TABLE AS Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ INTO" -#: preproc.y:13981 +#: preproc.y:13990 #, c-format msgid "expected \"@\", found \"%s\"" msgstr "ожидалÑÑ Ð·Ð½Ð°Ðº \"@\", но на Ñтом меÑте \"%s\"" -#: preproc.y:13993 +#: preproc.y:14002 #, c-format msgid "" "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are " @@ -465,90 +465,90 @@ msgstr "" "поддерживаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ протоколы \"tcp\" и \"unix\", а тип базы данных - " "\"postgresql\"" -#: preproc.y:13996 +#: preproc.y:14005 #, c-format msgid "expected \"://\", found \"%s\"" msgstr "ожидалоÑÑŒ \"://\", но на Ñтом меÑте \"%s\"" -#: preproc.y:14001 +#: preproc.y:14010 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" msgstr "" "Доменные Ñокеты Unix работают только Ñ \"localhost\", но не Ñ Ð°Ð´Ñ€ÐµÑом \"%s\"" -#: preproc.y:14027 +#: preproc.y:14036 #, c-format msgid "expected \"postgresql\", found \"%s\"" msgstr "ожидалÑÑ Ñ‚Ð¸Ð¿ \"postgresql\", но на Ñтом меÑте \"%s\"" -#: preproc.y:14030 +#: preproc.y:14039 #, c-format msgid "invalid connection type: %s" msgstr "неверный тип подключениÑ: %s" -#: preproc.y:14039 +#: preproc.y:14048 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" msgstr "ожидалоÑÑŒ \"@\" или \"://\", но на Ñтом меÑте \"%s\"" -#: preproc.y:14114 preproc.y:14132 +#: preproc.y:14123 preproc.y:14141 #, c-format msgid "invalid data type" msgstr "неверный тип данных" -#: preproc.y:14143 preproc.y:14160 +#: preproc.y:14152 preproc.y:14169 #, c-format msgid "incomplete statement" msgstr "неполный оператор" -#: preproc.y:14146 preproc.y:14163 +#: preproc.y:14155 preproc.y:14172 #, c-format msgid "unrecognized token \"%s\"" msgstr "нераÑпознанное ключевое Ñлово \"%s\"" -#: preproc.y:14437 +#: preproc.y:14446 #, c-format msgid "only data types numeric and decimal have precision/scale argument" msgstr "" "точноÑть/маÑштаб можно указать только Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² данных numeric и decimal" -#: preproc.y:14449 +#: preproc.y:14458 #, c-format msgid "interval specification not allowed here" msgstr "определение интервала здеÑÑŒ не допуÑкаетÑÑ" -#: preproc.y:14601 preproc.y:14653 +#: preproc.y:14610 preproc.y:14662 #, c-format msgid "too many levels in nested structure/union definition" msgstr "Ñлишком много уровней в определении вложенной Ñтруктуры/объединениÑ" -#: preproc.y:14792 +#: preproc.y:14801 #, c-format msgid "pointers to varchar are not implemented" msgstr "указатели на varchar не реализованы" -#: preproc.y:14979 preproc.y:15004 +#: preproc.y:14988 preproc.y:15013 #, c-format msgid "using unsupported DESCRIBE statement" msgstr "иÑпользуетÑÑ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ оператор DESCRIBE" -#: preproc.y:15251 +#: preproc.y:15260 #, c-format msgid "initializer not allowed in EXEC SQL VAR command" msgstr "команда EXEC SQL VAR не может включать инициализатор" -#: preproc.y:15562 +#: preproc.y:15571 #, c-format msgid "arrays of indicators are not allowed on input" msgstr "маÑÑивы индикаторов на входе недопуÑтимы" -#: preproc.y:15783 +#: preproc.y:15792 #, c-format msgid "operator not allowed in variable definition" msgstr "недопуÑтимый оператор в определении переменной" #. translator: %s is typically the translation of "syntax error" -#: preproc.y:15821 +#: preproc.y:15833 #, c-format msgid "%s at or near \"%s\"" msgstr "%s (примерное положение: \"%s\")" diff --git a/src/interfaces/ecpg/test/expected/thread-alloc.c b/src/interfaces/ecpg/test/expected/thread-alloc.c index 49f1cd19c4..5e946b2b85 100644 --- a/src/interfaces/ecpg/test/expected/thread-alloc.c +++ b/src/interfaces/ecpg/test/expected/thread-alloc.c @@ -22,6 +22,7 @@ main(void) #define WIN32_LEAN_AND_MEAN #include #include +#include #else #include #endif @@ -99,7 +100,7 @@ struct sqlca_t *ECPGget_sqlca(void); #endif -#line 24 "alloc.pgc" +#line 25 "alloc.pgc" #line 1 "regression.h" @@ -109,14 +110,14 @@ struct sqlca_t *ECPGget_sqlca(void); -#line 25 "alloc.pgc" +#line 26 "alloc.pgc" /* exec sql whenever sqlerror sqlprint ; */ -#line 27 "alloc.pgc" +#line 28 "alloc.pgc" /* exec sql whenever not found sqlprint ; */ -#line 28 "alloc.pgc" +#line 29 "alloc.pgc" #ifdef WIN32 @@ -132,54 +133,60 @@ static void* fn(void* arg) -#line 39 "alloc.pgc" +#line 40 "alloc.pgc" int value ; -#line 40 "alloc.pgc" +#line 41 "alloc.pgc" char name [ 100 ] ; -#line 41 "alloc.pgc" +#line 42 "alloc.pgc" char ** r = NULL ; /* exec sql end declare section */ -#line 42 "alloc.pgc" +#line 43 "alloc.pgc" + +#ifdef WIN32 +#ifdef _MSC_VER /* requires MSVC */ + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); +#endif +#endif value = (long)arg; sprintf(name, "Connection: %d", value); { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , name, 0); -#line 47 "alloc.pgc" +#line 54 "alloc.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 47 "alloc.pgc" +#line 54 "alloc.pgc" { ECPGsetcommit(__LINE__, "on", NULL); -#line 48 "alloc.pgc" +#line 55 "alloc.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 48 "alloc.pgc" +#line 55 "alloc.pgc" for (i = 1; i <= REPEATS; ++i) { { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select relname from pg_class where relname = 'pg_class'", ECPGt_EOIT, ECPGt_char,&(r),(long)0,(long)0,(1)*sizeof(char), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); -#line 51 "alloc.pgc" +#line 58 "alloc.pgc" if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint(); -#line 51 "alloc.pgc" +#line 58 "alloc.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 51 "alloc.pgc" +#line 58 "alloc.pgc" free(r); r = NULL; } { ECPGdisconnect(__LINE__, name); -#line 55 "alloc.pgc" +#line 62 "alloc.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 55 "alloc.pgc" +#line 62 "alloc.pgc" return 0; diff --git a/src/interfaces/ecpg/test/expected/thread-descriptor.c b/src/interfaces/ecpg/test/expected/thread-descriptor.c index e2be89dec0..2f15262209 100644 --- a/src/interfaces/ecpg/test/expected/thread-descriptor.c +++ b/src/interfaces/ecpg/test/expected/thread-descriptor.c @@ -12,6 +12,7 @@ #define WIN32_LEAN_AND_MEAN #include #include +#include #else #include #endif @@ -90,13 +91,13 @@ struct sqlca_t *ECPGget_sqlca(void); #endif -#line 15 "descriptor.pgc" +#line 16 "descriptor.pgc" /* exec sql whenever sqlerror sqlprint ; */ -#line 16 "descriptor.pgc" +#line 17 "descriptor.pgc" /* exec sql whenever not found sqlprint ; */ -#line 17 "descriptor.pgc" +#line 18 "descriptor.pgc" #if defined(ENABLE_THREAD_SAFETY) && defined(WIN32) @@ -107,19 +108,25 @@ static void* fn(void* arg) { int i; +#ifdef WIN32 +#ifdef _MSC_VER /* requires MSVC */ + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); +#endif +#endif + for (i = 1; i <= REPEATS; ++i) { ECPGallocate_desc(__LINE__, "mydesc"); -#line 29 "descriptor.pgc" +#line 36 "descriptor.pgc" if (sqlca.sqlcode < 0) sqlprint(); -#line 29 "descriptor.pgc" +#line 36 "descriptor.pgc" ECPGdeallocate_desc(__LINE__, "mydesc"); -#line 30 "descriptor.pgc" +#line 37 "descriptor.pgc" if (sqlca.sqlcode < 0) sqlprint(); -#line 30 "descriptor.pgc" +#line 37 "descriptor.pgc" } diff --git a/src/interfaces/ecpg/test/expected/thread-prep.c b/src/interfaces/ecpg/test/expected/thread-prep.c index 4d06b90b98..0c9090756f 100644 --- a/src/interfaces/ecpg/test/expected/thread-prep.c +++ b/src/interfaces/ecpg/test/expected/thread-prep.c @@ -22,6 +22,7 @@ main(void) #define WIN32_LEAN_AND_MEAN #include #include +#include #else #include #endif @@ -99,7 +100,7 @@ struct sqlca_t *ECPGget_sqlca(void); #endif -#line 24 "prep.pgc" +#line 25 "prep.pgc" #line 1 "regression.h" @@ -109,14 +110,14 @@ struct sqlca_t *ECPGget_sqlca(void); -#line 25 "prep.pgc" +#line 26 "prep.pgc" /* exec sql whenever sqlerror sqlprint ; */ -#line 27 "prep.pgc" +#line 28 "prep.pgc" /* exec sql whenever not found sqlprint ; */ -#line 28 "prep.pgc" +#line 29 "prep.pgc" #ifdef WIN32 @@ -132,64 +133,70 @@ static void* fn(void* arg) -#line 39 "prep.pgc" +#line 40 "prep.pgc" int value ; -#line 40 "prep.pgc" +#line 41 "prep.pgc" char name [ 100 ] ; -#line 41 "prep.pgc" +#line 42 "prep.pgc" char query [ 256 ] = "INSERT INTO T VALUES ( ? )" ; /* exec sql end declare section */ -#line 42 "prep.pgc" +#line 43 "prep.pgc" + +#ifdef WIN32 +#ifdef _MSC_VER /* requires MSVC */ + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); +#endif +#endif value = (long)arg; sprintf(name, "Connection: %d", value); { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , name, 0); -#line 47 "prep.pgc" +#line 54 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 47 "prep.pgc" +#line 54 "prep.pgc" { ECPGsetcommit(__LINE__, "on", NULL); -#line 48 "prep.pgc" +#line 55 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 48 "prep.pgc" +#line 55 "prep.pgc" for (i = 1; i <= REPEATS; ++i) { { ECPGprepare(__LINE__, NULL, 0, "i", query); -#line 51 "prep.pgc" +#line 58 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 51 "prep.pgc" +#line 58 "prep.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "i", ECPGt_int,&(value),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); -#line 52 "prep.pgc" +#line 59 "prep.pgc" if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint(); -#line 52 "prep.pgc" +#line 59 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 52 "prep.pgc" +#line 59 "prep.pgc" } { ECPGdeallocate(__LINE__, 0, NULL, "i"); -#line 54 "prep.pgc" +#line 61 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 54 "prep.pgc" +#line 61 "prep.pgc" { ECPGdisconnect(__LINE__, name); -#line 55 "prep.pgc" +#line 62 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 55 "prep.pgc" +#line 62 "prep.pgc" return 0; @@ -205,34 +212,34 @@ int main () #endif { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0); -#line 69 "prep.pgc" +#line 76 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 69 "prep.pgc" +#line 76 "prep.pgc" { ECPGsetcommit(__LINE__, "on", NULL); -#line 70 "prep.pgc" +#line 77 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 70 "prep.pgc" +#line 77 "prep.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table if exists T", ECPGt_EOIT, ECPGt_EORT); -#line 71 "prep.pgc" +#line 78 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 71 "prep.pgc" +#line 78 "prep.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table T ( i int )", ECPGt_EOIT, ECPGt_EORT); -#line 72 "prep.pgc" +#line 79 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 72 "prep.pgc" +#line 79 "prep.pgc" { ECPGdisconnect(__LINE__, "CURRENT"); -#line 73 "prep.pgc" +#line 80 "prep.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 73 "prep.pgc" +#line 80 "prep.pgc" #ifdef WIN32 diff --git a/src/interfaces/ecpg/test/expected/thread-thread.c b/src/interfaces/ecpg/test/expected/thread-thread.c index 981a763a3f..87cc660ecf 100644 --- a/src/interfaces/ecpg/test/expected/thread-thread.c +++ b/src/interfaces/ecpg/test/expected/thread-thread.c @@ -26,6 +26,7 @@ main(void) #include #else #include +#include #endif @@ -36,7 +37,7 @@ main(void) -#line 22 "thread.pgc" +#line 23 "thread.pgc" void *test_thread(void *arg); @@ -55,10 +56,10 @@ int main() /* exec sql begin declare section */ -#line 38 "thread.pgc" +#line 39 "thread.pgc" int l_rows ; /* exec sql end declare section */ -#line 39 "thread.pgc" +#line 40 "thread.pgc" /* Do not switch on debug output for regression tests. The threads get executed in @@ -67,22 +68,22 @@ int main() /* setup test_thread table */ { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0); } -#line 46 "thread.pgc" +#line 47 "thread.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table test_thread", ECPGt_EOIT, ECPGt_EORT);} -#line 47 "thread.pgc" +#line 48 "thread.pgc" /* DROP might fail */ { ECPGtrans(__LINE__, NULL, "commit");} -#line 48 "thread.pgc" +#line 49 "thread.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table test_thread ( tstamp timestamp not null default cast ( timeofday ( ) as timestamp ) , thread text not null , iteration integer not null , primary key ( thread , iteration ) )", ECPGt_EOIT, ECPGt_EORT);} -#line 53 "thread.pgc" +#line 54 "thread.pgc" { ECPGtrans(__LINE__, NULL, "commit");} -#line 54 "thread.pgc" +#line 55 "thread.pgc" { ECPGdisconnect(__LINE__, "CURRENT");} -#line 55 "thread.pgc" +#line 56 "thread.pgc" /* create, and start, threads */ @@ -114,18 +115,18 @@ int main() /* and check results */ { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0); } -#line 85 "thread.pgc" +#line 86 "thread.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from test_thread", ECPGt_EOIT, ECPGt_int,&(l_rows),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} -#line 86 "thread.pgc" +#line 87 "thread.pgc" { ECPGtrans(__LINE__, NULL, "commit");} -#line 87 "thread.pgc" +#line 88 "thread.pgc" { ECPGdisconnect(__LINE__, "CURRENT");} -#line 88 "thread.pgc" +#line 89 "thread.pgc" if( l_rows == (nthreads * iterations) ) printf("Success.\n"); @@ -138,18 +139,25 @@ int main() void *test_thread(void *arg) { long threadnum = (long)arg; + /* exec sql begin declare section */ -#line 101 "thread.pgc" +#line 103 "thread.pgc" int l_i ; -#line 102 "thread.pgc" +#line 104 "thread.pgc" char l_connection [ 128 ] ; /* exec sql end declare section */ -#line 103 "thread.pgc" +#line 105 "thread.pgc" + +#ifdef WIN32 +#ifdef _MSC_VER /* requires MSVC */ + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); +#endif +#endif /* build up connection name, and connect to database */ #ifndef WIN32_ONLY_COMPILER @@ -158,13 +166,13 @@ void *test_thread(void *arg) _snprintf(l_connection, sizeof(l_connection), "thread_%03ld", threadnum); #endif /* exec sql whenever sqlerror sqlprint ; */ -#line 111 "thread.pgc" +#line 119 "thread.pgc" { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , l_connection, 0); -#line 112 "thread.pgc" +#line 120 "thread.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 112 "thread.pgc" +#line 120 "thread.pgc" if( sqlca.sqlcode != 0 ) { @@ -172,10 +180,10 @@ if (sqlca.sqlcode < 0) sqlprint();} return( NULL ); } { ECPGtrans(__LINE__, l_connection, "begin"); -#line 118 "thread.pgc" +#line 126 "thread.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 118 "thread.pgc" +#line 126 "thread.pgc" /* insert into test_thread table */ @@ -186,10 +194,10 @@ if (sqlca.sqlcode < 0) sqlprint();} ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_int,&(l_i),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); -#line 123 "thread.pgc" +#line 131 "thread.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 123 "thread.pgc" +#line 131 "thread.pgc" if( sqlca.sqlcode != 0 ) printf("%s: ERROR: insert failed!\n", l_connection); @@ -197,16 +205,16 @@ if (sqlca.sqlcode < 0) sqlprint();} /* all done */ { ECPGtrans(__LINE__, l_connection, "commit"); -#line 129 "thread.pgc" +#line 137 "thread.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 129 "thread.pgc" +#line 137 "thread.pgc" { ECPGdisconnect(__LINE__, l_connection); -#line 130 "thread.pgc" +#line 138 "thread.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 130 "thread.pgc" +#line 138 "thread.pgc" return( NULL ); } diff --git a/src/interfaces/ecpg/test/expected/thread-thread_implicit.c b/src/interfaces/ecpg/test/expected/thread-thread_implicit.c index 5f2d177c4a..e716260d46 100644 --- a/src/interfaces/ecpg/test/expected/thread-thread_implicit.c +++ b/src/interfaces/ecpg/test/expected/thread-thread_implicit.c @@ -27,6 +27,7 @@ main(void) #include #else #include +#include #endif @@ -37,7 +38,7 @@ main(void) -#line 23 "thread_implicit.pgc" +#line 24 "thread_implicit.pgc" void *test_thread(void *arg); @@ -56,10 +57,10 @@ int main() /* exec sql begin declare section */ -#line 39 "thread_implicit.pgc" +#line 40 "thread_implicit.pgc" int l_rows ; /* exec sql end declare section */ -#line 40 "thread_implicit.pgc" +#line 41 "thread_implicit.pgc" /* Do not switch on debug output for regression tests. The threads get executed in @@ -68,22 +69,22 @@ int main() /* setup test_thread table */ { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0); } -#line 47 "thread_implicit.pgc" +#line 48 "thread_implicit.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table test_thread", ECPGt_EOIT, ECPGt_EORT);} -#line 48 "thread_implicit.pgc" +#line 49 "thread_implicit.pgc" /* DROP might fail */ { ECPGtrans(__LINE__, NULL, "commit");} -#line 49 "thread_implicit.pgc" +#line 50 "thread_implicit.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table test_thread ( tstamp timestamp not null default cast ( timeofday ( ) as timestamp ) , thread text not null , iteration integer not null , primary key ( thread , iteration ) )", ECPGt_EOIT, ECPGt_EORT);} -#line 54 "thread_implicit.pgc" +#line 55 "thread_implicit.pgc" { ECPGtrans(__LINE__, NULL, "commit");} -#line 55 "thread_implicit.pgc" +#line 56 "thread_implicit.pgc" { ECPGdisconnect(__LINE__, "CURRENT");} -#line 56 "thread_implicit.pgc" +#line 57 "thread_implicit.pgc" /* create, and start, threads */ @@ -115,18 +116,18 @@ int main() /* and check results */ { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0); } -#line 86 "thread_implicit.pgc" +#line 87 "thread_implicit.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from test_thread", ECPGt_EOIT, ECPGt_int,&(l_rows),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} -#line 87 "thread_implicit.pgc" +#line 88 "thread_implicit.pgc" { ECPGtrans(__LINE__, NULL, "commit");} -#line 88 "thread_implicit.pgc" +#line 89 "thread_implicit.pgc" { ECPGdisconnect(__LINE__, "CURRENT");} -#line 89 "thread_implicit.pgc" +#line 90 "thread_implicit.pgc" if( l_rows == (nthreads * iterations) ) printf("Success.\n"); @@ -139,18 +140,25 @@ int main() void *test_thread(void *arg) { long threadnum = (long)arg; + /* exec sql begin declare section */ -#line 102 "thread_implicit.pgc" +#line 104 "thread_implicit.pgc" int l_i ; -#line 103 "thread_implicit.pgc" +#line 105 "thread_implicit.pgc" char l_connection [ 128 ] ; /* exec sql end declare section */ -#line 104 "thread_implicit.pgc" +#line 106 "thread_implicit.pgc" + +#ifdef WIN32 +#ifdef _MSC_VER /* requires MSVC */ + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); +#endif +#endif /* build up connection name, and connect to database */ #ifndef WIN32_ONLY_COMPILER @@ -159,13 +167,13 @@ void *test_thread(void *arg) _snprintf(l_connection, sizeof(l_connection), "thread_%03ld", threadnum); #endif /* exec sql whenever sqlerror sqlprint ; */ -#line 112 "thread_implicit.pgc" +#line 120 "thread_implicit.pgc" { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , l_connection, 0); -#line 113 "thread_implicit.pgc" +#line 121 "thread_implicit.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 113 "thread_implicit.pgc" +#line 121 "thread_implicit.pgc" if( sqlca.sqlcode != 0 ) { @@ -173,10 +181,10 @@ if (sqlca.sqlcode < 0) sqlprint();} return( NULL ); } { ECPGtrans(__LINE__, NULL, "begin"); -#line 119 "thread_implicit.pgc" +#line 127 "thread_implicit.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 119 "thread_implicit.pgc" +#line 127 "thread_implicit.pgc" /* insert into test_thread table */ @@ -187,10 +195,10 @@ if (sqlca.sqlcode < 0) sqlprint();} ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_int,&(l_i),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); -#line 124 "thread_implicit.pgc" +#line 132 "thread_implicit.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 124 "thread_implicit.pgc" +#line 132 "thread_implicit.pgc" if( sqlca.sqlcode != 0 ) printf("%s: ERROR: insert failed!\n", l_connection); @@ -198,16 +206,16 @@ if (sqlca.sqlcode < 0) sqlprint();} /* all done */ { ECPGtrans(__LINE__, NULL, "commit"); -#line 130 "thread_implicit.pgc" +#line 138 "thread_implicit.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 130 "thread_implicit.pgc" +#line 138 "thread_implicit.pgc" { ECPGdisconnect(__LINE__, l_connection); -#line 131 "thread_implicit.pgc" +#line 139 "thread_implicit.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 131 "thread_implicit.pgc" +#line 139 "thread_implicit.pgc" return( NULL ); } diff --git a/src/interfaces/ecpg/test/thread/alloc.pgc b/src/interfaces/ecpg/test/thread/alloc.pgc index ea98495be4..b13bcb860b 100644 --- a/src/interfaces/ecpg/test/thread/alloc.pgc +++ b/src/interfaces/ecpg/test/thread/alloc.pgc @@ -13,6 +13,7 @@ main(void) #define WIN32_LEAN_AND_MEAN #include #include +#include #else #include #endif @@ -41,6 +42,12 @@ static void* fn(void* arg) char **r = NULL; EXEC SQL END DECLARE SECTION; +#ifdef WIN32 +#ifdef _MSC_VER /* requires MSVC */ + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); +#endif +#endif + value = (long)arg; sprintf(name, "Connection: %d", value); diff --git a/src/interfaces/ecpg/test/thread/descriptor.pgc b/src/interfaces/ecpg/test/thread/descriptor.pgc index e07a5e22b7..3f28c6d329 100644 --- a/src/interfaces/ecpg/test/thread/descriptor.pgc +++ b/src/interfaces/ecpg/test/thread/descriptor.pgc @@ -3,6 +3,7 @@ #define WIN32_LEAN_AND_MEAN #include #include +#include #else #include #endif @@ -24,6 +25,12 @@ static void* fn(void* arg) { int i; +#ifdef WIN32 +#ifdef _MSC_VER /* requires MSVC */ + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); +#endif +#endif + for (i = 1; i <= REPEATS; ++i) { EXEC SQL ALLOCATE DESCRIPTOR mydesc; diff --git a/src/interfaces/ecpg/test/thread/prep.pgc b/src/interfaces/ecpg/test/thread/prep.pgc index 45205ddc8b..3a2467c9ab 100644 --- a/src/interfaces/ecpg/test/thread/prep.pgc +++ b/src/interfaces/ecpg/test/thread/prep.pgc @@ -13,6 +13,7 @@ main(void) #define WIN32_LEAN_AND_MEAN #include #include +#include #else #include #endif @@ -41,6 +42,12 @@ static void* fn(void* arg) char query[256] = "INSERT INTO T VALUES ( ? )"; EXEC SQL END DECLARE SECTION; +#ifdef WIN32 +#ifdef _MSC_VER /* requires MSVC */ + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); +#endif +#endif + value = (long)arg; sprintf(name, "Connection: %d", value); diff --git a/src/interfaces/ecpg/test/thread/thread.pgc b/src/interfaces/ecpg/test/thread/thread.pgc index d8ee96dd55..e3680b3b31 100644 --- a/src/interfaces/ecpg/test/thread/thread.pgc +++ b/src/interfaces/ecpg/test/thread/thread.pgc @@ -17,6 +17,7 @@ main(void) #include #else #include +#include #endif exec sql include ../regression; @@ -97,11 +98,18 @@ int main() void *test_thread(void *arg) { long threadnum = (long)arg; + EXEC SQL BEGIN DECLARE SECTION; int l_i; char l_connection[128]; EXEC SQL END DECLARE SECTION; +#ifdef WIN32 +#ifdef _MSC_VER /* requires MSVC */ + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); +#endif +#endif + /* build up connection name, and connect to database */ #ifndef WIN32_ONLY_COMPILER snprintf(l_connection, sizeof(l_connection), "thread_%03ld", threadnum); diff --git a/src/interfaces/ecpg/test/thread/thread_implicit.pgc b/src/interfaces/ecpg/test/thread/thread_implicit.pgc index e39b8b8007..e5814acb27 100644 --- a/src/interfaces/ecpg/test/thread/thread_implicit.pgc +++ b/src/interfaces/ecpg/test/thread/thread_implicit.pgc @@ -18,6 +18,7 @@ main(void) #include #else #include +#include #endif exec sql include ../regression; @@ -98,11 +99,18 @@ int main() void *test_thread(void *arg) { long threadnum = (long)arg; + EXEC SQL BEGIN DECLARE SECTION; int l_i; char l_connection[128]; EXEC SQL END DECLARE SECTION; +#ifdef WIN32 +#ifdef _MSC_VER /* requires MSVC */ + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); +#endif +#endif + /* build up connection name, and connect to database */ #ifndef WIN32_ONLY_COMPILER snprintf(l_connection, sizeof(l_connection), "thread_%03ld", threadnum); diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c index 9bf6e52d63..ab057e945a 100644 --- a/src/interfaces/libpq/fe-auth.c +++ b/src/interfaces/libpq/fe-auth.c @@ -372,7 +372,12 @@ pg_SSPI_startup(PGconn *conn, int use_negotiate) SECURITY_STATUS r; TimeStamp expire; - conn->sspictx = NULL; + if (conn->sspictx) + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("duplicate SSPI authentication request\n")); + return STATUS_ERROR; + } /* * Retrieve credentials handle @@ -703,6 +708,19 @@ pg_fe_sendauth(AuthRequest areq, PGconn *conn) return STATUS_ERROR; break; + /* + * SASL authentication was introduced in version 10. Older + * versions recognize the request only to give a nicer error + * message. We call it "SCRAM authentication" in the error, rather + * than SASL, because SCRAM is more familiar to users, and it's + * the only SASL authentication mechanism that has been + * implemented as of this writing, anyway. + */ + case AUTH_REQ_SASL: + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("SCRAM authentication requires libpq version 10 or above\n")); + return STATUS_ERROR; + default: printfPQExpBuffer(&conn->errorMessage, libpq_gettext("authentication method %u not supported\n"), areq); diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 4f13624017..e61ed7dc28 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -99,6 +99,25 @@ static int ldapServiceLookup(const char *purl, PQconninfoOption *options, /* This too */ #define ERRCODE_CANNOT_CONNECT_NOW "57P03" +/* + * 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 + /* * fall back options if they are not specified by arguments or defined * by environment variables @@ -401,15 +420,56 @@ pqDropConnection(PGconn *conn, bool flushInput) { /* Drop any SSL state */ pqsecure_close(conn); + /* Close the socket itself */ if (conn->sock != PGINVALID_SOCKET) closesocket(conn->sock); conn->sock = PGINVALID_SOCKET; + /* Optionally discard any unread data */ if (flushInput) conn->inStart = conn->inCursor = conn->inEnd = 0; + /* Always discard any unsent data */ conn->outCount = 0; + + /* Free authentication state */ +#ifdef ENABLE_GSS + { + OM_uint32 min_s; + + if (conn->gctx) + gss_delete_sec_context(&min_s, &conn->gctx, GSS_C_NO_BUFFER); + if (conn->gtarg_nam) + gss_release_name(&min_s, &conn->gtarg_nam); + if (conn->ginbuf.length) + gss_release_buffer(&min_s, &conn->ginbuf); + if (conn->goutbuf.length) + gss_release_buffer(&min_s, &conn->goutbuf); + } +#endif +#ifdef ENABLE_SSPI + if (conn->ginbuf.length) + free(conn->ginbuf.value); + conn->ginbuf.length = 0; + conn->ginbuf.value = NULL; + if (conn->sspitarget) + free(conn->sspitarget); + conn->sspitarget = NULL; + if (conn->sspicred) + { + FreeCredentialsHandle(conn->sspicred); + free(conn->sspicred); + conn->sspicred = NULL; + } + if (conn->sspictx) + { + DeleteSecurityContext(conn->sspictx); + free(conn->sspictx); + conn->sspictx = NULL; + } + conn->usesspi = 0; +#endif } @@ -1239,31 +1299,18 @@ setKeepalivesIdle(PGconn *conn) if (idle < 0) idle = 0; -#ifdef TCP_KEEPIDLE - if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPIDLE, +#ifdef PG_TCP_KEEPALIVE_IDLE + if (setsockopt(conn->sock, IPPROTO_TCP, PG_TCP_KEEPALIVE_IDLE, (char *) &idle, sizeof(idle)) < 0) { char sebuf[256]; appendPQExpBuffer(&conn->errorMessage, - libpq_gettext("setsockopt(TCP_KEEPIDLE) failed: %s\n"), + libpq_gettext("setsockopt(%s) failed: %s\n"), + PG_TCP_KEEPALIVE_IDLE_STR, SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); return 0; } -#else -#ifdef TCP_KEEPALIVE - /* Darwin uses TCP_KEEPALIVE rather than TCP_KEEPIDLE */ - if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPALIVE, - (char *) &idle, sizeof(idle)) < 0) - { - char sebuf[256]; - - appendPQExpBuffer(&conn->errorMessage, - libpq_gettext("setsockopt(TCP_KEEPALIVE) failed: %s\n"), - SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); - return 0; - } -#endif #endif return 1; @@ -1291,7 +1338,8 @@ setKeepalivesInterval(PGconn *conn) char sebuf[256]; appendPQExpBuffer(&conn->errorMessage, - libpq_gettext("setsockopt(TCP_KEEPINTVL) failed: %s\n"), + libpq_gettext("setsockopt(%s) failed: %s\n"), + "TCP_KEEPINTVL", SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); return 0; } @@ -1323,7 +1371,8 @@ setKeepalivesCount(PGconn *conn) char sebuf[256]; appendPQExpBuffer(&conn->errorMessage, - libpq_gettext("setsockopt(TCP_KEEPCNT) failed: %s\n"), + libpq_gettext("setsockopt(%s) failed: %s\n"), + "TCP_KEEPCNT", SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); return 0; } @@ -1331,7 +1380,7 @@ setKeepalivesCount(PGconn *conn) return 1; } -#else /* Win32 */ +#else /* WIN32 */ #ifdef SIO_KEEPALIVE_VALS /* * Enable keepalives and set the keepalive values on Win32, @@ -1789,7 +1838,8 @@ PQconnectPoll(PGconn *conn) (char *) &on, sizeof(on)) < 0) { appendPQExpBuffer(&conn->errorMessage, - libpq_gettext("setsockopt(SO_KEEPALIVE) failed: %s\n"), + libpq_gettext("setsockopt(%s) failed: %s\n"), + "SO_KEEPALIVE", SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); err = 1; } @@ -3007,41 +3057,6 @@ closePGconn(PGconn *conn) if (conn->lobjfuncs) free(conn->lobjfuncs); conn->lobjfuncs = NULL; -#ifdef ENABLE_GSS - { - OM_uint32 min_s; - - if (conn->gctx) - gss_delete_sec_context(&min_s, &conn->gctx, GSS_C_NO_BUFFER); - if (conn->gtarg_nam) - gss_release_name(&min_s, &conn->gtarg_nam); - if (conn->ginbuf.length) - gss_release_buffer(&min_s, &conn->ginbuf); - if (conn->goutbuf.length) - gss_release_buffer(&min_s, &conn->goutbuf); - } -#endif -#ifdef ENABLE_SSPI - if (conn->ginbuf.length) - free(conn->ginbuf.value); - conn->ginbuf.length = 0; - conn->ginbuf.value = NULL; - if (conn->sspitarget) - free(conn->sspitarget); - conn->sspitarget = NULL; - if (conn->sspicred) - { - FreeCredentialsHandle(conn->sspicred); - free(conn->sspicred); - conn->sspicred = NULL; - } - if (conn->sspictx) - { - DeleteSecurityContext(conn->sspictx); - free(conn->sspictx); - conn->sspictx = NULL; - } -#endif } /* @@ -4635,6 +4650,30 @@ conninfo_add_defaults(PQconninfoOption *options, PQExpBuffer errorMessage) } } + /* + * Interpret the deprecated PGREQUIRESSL environment variable. Per + * tradition, translate values starting with "1" to sslmode=require, + * and ignore other values. Given both PGREQUIRESSL=1 and PGSSLMODE, + * PGSSLMODE takes precedence; the opposite was true before v9.3. + */ + if (strcmp(option->keyword, "sslmode") == 0) + { + const char *requiresslenv = getenv("PGREQUIRESSL"); + + if (requiresslenv != NULL && requiresslenv[0] == '1') + { + option->val = strdup("require"); + if (!option->val) + { + if (errorMessage) + printfPQExpBuffer(errorMessage, + libpq_gettext("out of memory\n")); + return false; + } + continue; + } + } + /* * No environment variable specified or the variable isn't set - try * compiled-in default diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index 87ff5659ff..ca20dd130c 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -16,6 +16,7 @@ #include #include +#include #include "libpq-fe.h" #include "libpq-int.h" @@ -51,7 +52,8 @@ static bool static_std_strings = false; static PGEvent *dupEvents(PGEvent *events, int count); -static bool pqAddTuple(PGresult *res, PGresAttValue *tup); +static bool pqAddTuple(PGresult *res, PGresAttValue *tup, + const char **errmsgp); static bool PQsendQueryStart(PGconn *conn); static int PQsendQueryGuts(PGconn *conn, const char *command, @@ -416,18 +418,26 @@ dupEvents(PGEvent *events, int count) * equal to PQntuples(res). If it is equal, a new tuple is created and * added to the result. * Returns a non-zero value for success and zero for failure. + * (On failure, we report the specific problem via pqInternalNotice.) */ int PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len) { PGresAttValue *attval; + const char *errmsg = NULL; + /* Note that this check also protects us against null "res" */ if (!check_field_number(res, field_num)) return FALSE; /* Invalid tup_num, must be <= ntups */ if (tup_num < 0 || tup_num > res->ntups) + { + pqInternalNotice(&res->noticeHooks, + "row number %d is out of range 0..%d", + tup_num, res->ntups); return FALSE; + } /* need to allocate a new tuple? */ if (tup_num == res->ntups) @@ -440,7 +450,7 @@ PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len) TRUE); if (!tup) - return FALSE; + goto fail; /* initialize each column to NULL */ for (i = 0; i < res->numAttributes; i++) @@ -450,8 +460,8 @@ PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len) } /* add it to the array */ - if (!pqAddTuple(res, tup)) - return FALSE; + if (!pqAddTuple(res, tup, &errmsg)) + goto fail; } attval = &res->tuples[tup_num][field_num]; @@ -471,13 +481,24 @@ PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len) { attval->value = (char *) pqResultAlloc(res, len + 1, TRUE); if (!attval->value) - return FALSE; + goto fail; attval->len = len; memcpy(attval->value, value, len); attval->value[len] = '\0'; } return TRUE; + + /* + * Report failure via pqInternalNotice. If preceding code didn't provide + * an error message, assume "out of memory" was meant. + */ +fail: + if (!errmsg) + errmsg = libpq_gettext("out of memory"); + pqInternalNotice(&res->noticeHooks, "%s", errmsg); + + return FALSE; } /* @@ -847,10 +868,13 @@ pqInternalNotice(const PGNoticeHooks *hooks, const char *fmt,...) /* * pqAddTuple * add a row pointer to the PGresult structure, growing it if necessary - * Returns TRUE if OK, FALSE if not enough memory to add the row + * Returns TRUE if OK, FALSE if an error prevented adding the row + * + * On error, *errmsgp can be set to an error string to be returned. + * If it is left NULL, the error is presumed to be "out of memory". */ static bool -pqAddTuple(PGresult *res, PGresAttValue *tup) +pqAddTuple(PGresult *res, PGresAttValue *tup, const char **errmsgp) { if (res->ntups >= res->tupArrSize) { @@ -865,9 +889,36 @@ pqAddTuple(PGresult *res, PGresAttValue *tup) * existing allocation. Note that the positions beyond res->ntups are * garbage, not necessarily NULL. */ - int newSize = (res->tupArrSize > 0) ? res->tupArrSize * 2 : 128; + int newSize; PGresAttValue **newTuples; + /* + * Since we use integers for row numbers, we can't support more than + * INT_MAX rows. Make sure we allow that many, though. + */ + if (res->tupArrSize <= INT_MAX / 2) + newSize = (res->tupArrSize > 0) ? res->tupArrSize * 2 : 128; + else if (res->tupArrSize < INT_MAX) + newSize = INT_MAX; + else + { + *errmsgp = libpq_gettext("PGresult cannot support more than INT_MAX tuples"); + return FALSE; + } + + /* + * Also, on 32-bit platforms we could, in theory, overflow size_t even + * before newSize gets to INT_MAX. (In practice we'd doubtless hit + * OOM long before that, but let's check.) + */ +#if INT_MAX >= (SIZE_MAX / 2) + if (newSize > SIZE_MAX / sizeof(PGresAttValue *)) + { + *errmsgp = libpq_gettext("size_t overflow"); + return FALSE; + } +#endif + if (res->tuples == NULL) newTuples = (PGresAttValue **) malloc(newSize * sizeof(PGresAttValue *)); @@ -1093,7 +1144,7 @@ pqRowProcessor(PGconn *conn, const char **errmsgp) } /* And add the tuple to the PGresult's tuple array */ - if (!pqAddTuple(res, tup)) + if (!pqAddTuple(res, tup, errmsgp)) goto fail; /* diff --git a/src/interfaces/libpq/libpq.rc.in b/src/interfaces/libpq/libpq.rc.in index 72e2cc07d8..da975742b7 100644 --- a/src/interfaces/libpq/libpq.rc.in +++ b/src/interfaces/libpq/libpq.rc.in @@ -1,8 +1,8 @@ #include VS_VERSION_INFO VERSIONINFO - FILEVERSION 9,6,2,0 - PRODUCTVERSION 9,6,2,0 + FILEVERSION 9,6,5,0 + PRODUCTVERSION 9,6,5,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0 FILEOS VOS__WINDOWS32 @@ -15,13 +15,13 @@ BEGIN BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "PostgreSQL Access Library\0" - VALUE "FileVersion", "9.6.2\0" + VALUE "FileVersion", "9.6.5\0" VALUE "InternalName", "libpq\0" VALUE "LegalCopyright", "Copyright (C) 2016\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "libpq.dll\0" VALUE "ProductName", "PostgreSQL\0" - VALUE "ProductVersion", "9.6.2\0" + VALUE "ProductVersion", "9.6.5\0" END END BLOCK "VarFileInfo" diff --git a/src/interfaces/libpq/po/de.po b/src/interfaces/libpq/po/de.po index 0b602fb6e0..6d1cf2d002 100644 --- a/src/interfaces/libpq/po/de.po +++ b/src/interfaces/libpq/po/de.po @@ -1,5 +1,5 @@ # German message translation file for libpq -# 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-04-23 21:08+0000\n" -"PO-Revision-Date: 2016-04-23 21:21-0400\n" +"POT-Creation-Date: 2017-08-07 16:17+0000\n" +"PO-Revision-Date: 2017-08-07 12:53-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -20,7 +20,7 @@ msgstr "" msgid "GSSAPI continuation error" msgstr "GSSAPI-Fortsetzungsfehler" -#: fe-auth.c:177 fe-auth.c:412 +#: fe-auth.c:177 fe-auth.c:417 msgid "host name must be specified\n" msgstr "Hostname muss angegeben werden\n" @@ -28,14 +28,15 @@ msgstr "Hostname muss angegeben werden\n" msgid "duplicate GSS authentication request\n" msgstr "doppelte GSSAPI-Authentifizierungsanfrage\n" -#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:383 fe-auth.c:418 fe-auth.c:514 -#: fe-auth.c:780 fe-connect.c:707 fe-connect.c:904 fe-connect.c:1080 -#: fe-connect.c:2091 fe-connect.c:3484 fe-connect.c:3736 fe-connect.c:3855 -#: fe-connect.c:4095 fe-connect.c:4175 fe-connect.c:4274 fe-connect.c:4526 -#: fe-connect.c:4555 fe-connect.c:4627 fe-connect.c:4645 fe-connect.c:4741 -#: fe-connect.c:5075 fe-connect.c:5225 fe-exec.c:2634 fe-exec.c:3381 -#: fe-exec.c:3546 fe-lobj.c:896 fe-protocol2.c:1206 fe-protocol3.c:992 -#: fe-protocol3.c:1678 fe-secure-openssl.c:551 fe-secure-openssl.c:1093 +#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:388 fe-auth.c:423 fe-auth.c:519 +#: fe-auth.c:798 fe-connect.c:767 fe-connect.c:964 fe-connect.c:1140 +#: fe-connect.c:2141 fe-connect.c:3499 fe-connect.c:3751 fe-connect.c:3870 +#: fe-connect.c:4110 fe-connect.c:4190 fe-connect.c:4289 fe-connect.c:4545 +#: fe-connect.c:4574 fe-connect.c:4646 fe-connect.c:4670 fe-connect.c:4688 +#: fe-connect.c:4784 fe-connect.c:5118 fe-connect.c:5268 fe-exec.c:2651 +#: fe-exec.c:3398 fe-exec.c:3563 fe-lobj.c:896 fe-protocol2.c:1206 +#: fe-protocol3.c:992 fe-protocol3.c:1678 fe-secure-openssl.c:515 +#: fe-secure-openssl.c:1139 msgid "out of memory\n" msgstr "Speicher aufgebraucht\n" @@ -47,70 +48,78 @@ msgstr "GSSAPI-Namensimportfehler" msgid "SSPI continuation error" msgstr "SSPI-Fortsetzungsfehler" -#: fe-auth.c:398 +#: fe-auth.c:378 +msgid "duplicate SSPI authentication request\n" +msgstr "doppelte SSPI-Authentifizierungsanfrage\n" + +#: fe-auth.c:403 msgid "could not acquire SSPI credentials" msgstr "konnte SSPI-Credentials nicht erhalten" -#: fe-auth.c:489 +#: fe-auth.c:494 msgid "SCM_CRED authentication method not supported\n" msgstr "SCM_CRED-Authentifizierungsmethode nicht unterstützt\n" -#: fe-auth.c:565 +#: fe-auth.c:570 msgid "Kerberos 4 authentication not supported\n" msgstr "Authentifizierung mit Kerberos 4 nicht unterstützt\n" -#: fe-auth.c:570 +#: fe-auth.c:575 msgid "Kerberos 5 authentication not supported\n" msgstr "Authentifizierung mit Kerberos 5 nicht unterstützt\n" -#: fe-auth.c:641 +#: fe-auth.c:646 msgid "GSSAPI authentication not supported\n" msgstr "Authentifizierung mit GSSAPI nicht unterstützt\n" -#: fe-auth.c:673 +#: fe-auth.c:678 msgid "SSPI authentication not supported\n" msgstr "Authentifizierung mit SSPI nicht unterstützt\n" -#: fe-auth.c:681 +#: fe-auth.c:686 msgid "Crypt authentication not supported\n" msgstr "Authentifizierung mit Crypt nicht unterstützt\n" -#: fe-auth.c:708 +#: fe-auth.c:721 +msgid "SCRAM authentication requires libpq version 10 or above\n" +msgstr "SCRAM-Authentifizierung benötigt libpq Version 10 oder neuer\n" + +#: fe-auth.c:726 #, c-format msgid "authentication method %u not supported\n" msgstr "Authentifizierungsmethode %u nicht unterstützt\n" -#: fe-auth.c:755 +#: fe-auth.c:773 #, c-format msgid "user name lookup failure: error code %lu\n" msgstr "Fehler beim Nachschlagen des Benutzernamens: Fehlercode %lu\n" -#: fe-auth.c:765 fe-connect.c:2018 +#: fe-auth.c:783 fe-connect.c:2068 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "konnte lokale Benutzer-ID %d nicht nachschlagen: %s\n" -#: fe-auth.c:770 fe-connect.c:2023 +#: fe-auth.c:788 fe-connect.c:2073 #, c-format msgid "local user with ID %d does not exist\n" msgstr "lokaler Benutzer mit ID %d existiert nicht\n" -#: fe-connect.c:846 +#: fe-connect.c:906 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "ungültiger sslmode-Wert: »%s«\n" -#: fe-connect.c:867 +#: fe-connect.c:927 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "sslmode-Wert »%s« ist ungültig, wenn SSL-Unterstützung nicht einkompiliert worden ist\n" -#: fe-connect.c:1104 +#: fe-connect.c:1164 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "konnte Socket nicht auf TCP »No Delay«-Modus umstellen: %s\n" -#: fe-connect.c:1134 +#: fe-connect.c:1194 #, c-format msgid "" "could not connect to server: %s\n" @@ -121,7 +130,7 @@ msgstr "" "\tLäuft der Server lokal und akzeptiert er Verbindungen\n" "\tauf dem Unix-Domain-Socket »%s«?\n" -#: fe-connect.c:1189 +#: fe-connect.c:1249 #, c-format msgid "" "could not connect to server: %s\n" @@ -132,7 +141,7 @@ msgstr "" "\tLäuft der Server auf dem Host »%s« (%s) und akzeptiert er\n" "\tTCP/IP-Verbindungen auf Port %s?\n" -#: fe-connect.c:1198 +#: fe-connect.c:1258 #, c-format msgid "" "could not connect to server: %s\n" @@ -143,300 +152,280 @@ msgstr "" "\tLäuft der Server auf dem Host »%s« und akzeptiert er\n" "\tTCP/IP-Verbindungen auf Port %s?\n" -#: fe-connect.c:1249 -#, c-format -msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" -msgstr "setsockopt(TCP_KEEPIDLE) fehlgeschlagen: %s\n" - -#: fe-connect.c:1262 -#, c-format -msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" -msgstr "setsockopt(TCP_KEEPALIVE) fehlgeschlagen: %s\n" - -#: fe-connect.c:1294 -#, c-format -msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" -msgstr "setsockopt(TCP_KEEPINTVL) fehlgeschlagen: %s\n" - -#: fe-connect.c:1326 +#: fe-connect.c:1309 fe-connect.c:1341 fe-connect.c:1374 fe-connect.c:1841 #, c-format -msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" -msgstr "setsockopt(TCP_KEEPCNT) fehlgeschlagen: %s\n" +msgid "setsockopt(%s) failed: %s\n" +msgstr "setsockopt(%s) fehlgeschlagen: %s\n" -#: fe-connect.c:1374 +#: fe-connect.c:1423 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) fehlgeschlagen: %ui\n" -#: fe-connect.c:1426 +#: fe-connect.c:1475 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "ungültige Portnummer: »%s«\n" -#: fe-connect.c:1459 +#: fe-connect.c:1508 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "Unix-Domain-Socket-Pfad »%s« ist zu lang (maximal %d Bytes)\n" -#: fe-connect.c:1478 +#: fe-connect.c:1527 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "konnte Hostnamen »%s« nicht in Adresse übersetzen: %s\n" -#: fe-connect.c:1482 +#: fe-connect.c:1531 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "konnte Unix-Domain-Socket-Pfad »%s« nicht in Adresse übersetzen: %s\n" -#: fe-connect.c:1687 +#: fe-connect.c:1736 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "ungültiger Verbindungszustand, möglicherweise ein Speicherproblem\n" -#: fe-connect.c:1727 +#: fe-connect.c:1776 #, c-format msgid "could not create socket: %s\n" msgstr "konnte Socket nicht erzeugen: %s\n" -#: fe-connect.c:1749 +#: fe-connect.c:1798 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "konnte Socket nicht auf nicht-blockierenden Modus umstellen: %s\n" -#: fe-connect.c:1760 +#: fe-connect.c:1809 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "konnte Socket nicht auf »Close on exec«-Modus umstellen: %s\n" -#: fe-connect.c:1779 +#: fe-connect.c:1828 msgid "keepalives parameter must be an integer\n" msgstr "Parameter »keepalives« muss eine ganze Zahl sein\n" -#: fe-connect.c:1792 -#, c-format -msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" -msgstr "setsockopt(SO_KEEPALIVE) fehlgeschlagen: %s\n" - -#: fe-connect.c:1929 +#: fe-connect.c:1979 #, c-format msgid "could not get socket error status: %s\n" msgstr "konnte Socket-Fehlerstatus nicht ermitteln: %s\n" -#: fe-connect.c:1963 +#: fe-connect.c:2013 #, c-format msgid "could not get client address from socket: %s\n" msgstr "konnte Client-Adresse vom Socket nicht ermitteln: %s\n" -#: fe-connect.c:2005 +#: fe-connect.c:2055 msgid "requirepeer parameter is not supported on this platform\n" msgstr "Parameter »requirepeer« wird auf dieser Plattform nicht unterstützt\n" -#: fe-connect.c:2008 +#: fe-connect.c:2058 #, c-format msgid "could not get peer credentials: %s\n" msgstr "konnte Credentials von Gegenstelle nicht ermitteln: %s\n" -#: fe-connect.c:2031 +#: fe-connect.c:2081 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "requirepeer gibt »%s« an, aber tatsächlicher Benutzername der Gegenstelle ist »%s«\n" -#: fe-connect.c:2065 +#: fe-connect.c:2115 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "konnte Paket zur SSL-Verhandlung nicht senden: %s\n" -#: fe-connect.c:2104 +#: fe-connect.c:2154 #, c-format msgid "could not send startup packet: %s\n" msgstr "konnte Startpaket nicht senden: %s\n" -#: fe-connect.c:2174 +#: fe-connect.c:2224 msgid "server does not support SSL, but SSL was required\n" msgstr "Server unterstützt kein SSL, aber SSL wurde verlangt\n" -#: fe-connect.c:2200 +#: fe-connect.c:2250 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "ungültige Antwort auf SSL-Verhandlungspaket empfangen: %c\n" -#: fe-connect.c:2275 fe-connect.c:2308 +#: fe-connect.c:2325 fe-connect.c:2358 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "Authentifizierungsanfrage wurde vom Server erwartet, aber %c wurde empfangen\n" -#: fe-connect.c:2475 +#: fe-connect.c:2525 #, c-format msgid "out of memory allocating GSSAPI buffer (%d)" msgstr "Speicher aufgebraucht beim Anlegen des GSSAPI-Puffers (%d)" -#: fe-connect.c:2560 +#: fe-connect.c:2610 msgid "unexpected message from server during startup\n" msgstr "unerwartete Nachricht vom Server beim Start\n" -#: fe-connect.c:2654 +#: fe-connect.c:2704 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "ungültiger Verbindungszustand %d, möglicherweise ein Speicherproblem\n" -#: fe-connect.c:3090 fe-connect.c:3150 +#: fe-connect.c:3105 fe-connect.c:3165 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc »%s« während PGEVT_CONNRESET-Ereignis fehlgeschlagen\n" -#: fe-connect.c:3497 +#: fe-connect.c:3512 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "ungültige LDAP-URL »%s«: Schema muss ldap:// sein\n" -#: fe-connect.c:3512 +#: fe-connect.c:3527 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "ungültige LDAP-URL »%s«: Distinguished Name fehlt\n" -#: fe-connect.c:3523 fe-connect.c:3576 +#: fe-connect.c:3538 fe-connect.c:3591 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "ungültige LDAP-URL »%s«: muss genau ein Attribut haben\n" -#: fe-connect.c:3533 fe-connect.c:3590 +#: fe-connect.c:3548 fe-connect.c:3605 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "ungültige LDAP-URL »%s«: Suchbereich fehlt (base/one/sub)\n" -#: fe-connect.c:3544 +#: fe-connect.c:3559 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "ungültige LDAP-URL »%s«: kein Filter\n" -#: fe-connect.c:3565 +#: fe-connect.c:3580 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "ungültige LDAP-URL »%s«: ungültige Portnummer\n" -#: fe-connect.c:3599 +#: fe-connect.c:3614 msgid "could not create LDAP structure\n" msgstr "konnte LDAP-Struktur nicht erzeugen\n" -#: fe-connect.c:3675 +#: fe-connect.c:3690 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "Suche auf LDAP-Server fehlgeschlagen: %s\n" -#: fe-connect.c:3686 +#: fe-connect.c:3701 msgid "more than one entry found on LDAP lookup\n" msgstr "LDAP-Suche ergab mehr als einen Eintrag\n" -#: fe-connect.c:3687 fe-connect.c:3699 +#: fe-connect.c:3702 fe-connect.c:3714 msgid "no entry found on LDAP lookup\n" msgstr "kein Eintrag gefunden bei LDAP-Suche\n" -#: fe-connect.c:3710 fe-connect.c:3723 +#: fe-connect.c:3725 fe-connect.c:3738 msgid "attribute has no values on LDAP lookup\n" msgstr "Attribut hat keine Werte bei LDAP-Suche\n" -#: fe-connect.c:3775 fe-connect.c:3794 fe-connect.c:4313 +#: fe-connect.c:3790 fe-connect.c:3809 fe-connect.c:4328 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "fehlendes »=« nach »%s« in der Zeichenkette der Verbindungsdaten\n" -#: fe-connect.c:3867 fe-connect.c:4494 fe-connect.c:5208 +#: fe-connect.c:3882 fe-connect.c:4513 fe-connect.c:5251 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "ungültige Verbindungsoption »%s«\n" -#: fe-connect.c:3883 fe-connect.c:4362 +#: fe-connect.c:3898 fe-connect.c:4377 msgid "unterminated quoted string in connection info string\n" msgstr "fehlendes schließendes Anführungszeichen (\") in der Zeichenkette der Verbindungsdaten\n" -#: fe-connect.c:3923 +#: fe-connect.c:3938 msgid "could not get home directory to locate service definition file" msgstr "konnte Home-Verzeichnis nicht ermitteln, um Servicedefinitionsdatei zu finden" -#: fe-connect.c:3956 +#: fe-connect.c:3971 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "Definition von Service »%s« nicht gefunden\n" -#: fe-connect.c:3979 +#: fe-connect.c:3994 #, c-format msgid "service file \"%s\" not found\n" msgstr "Servicedatei »%s« nicht gefunden\n" -#: fe-connect.c:3992 +#: fe-connect.c:4007 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "Zeile %d zu lang in Servicedatei »%s«\n" -#: fe-connect.c:4063 fe-connect.c:4107 +#: fe-connect.c:4078 fe-connect.c:4122 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "Syntaxfehler in Servicedatei »%s«, Zeile %d\n" -#: fe-connect.c:4074 +#: fe-connect.c:4089 #, c-format msgid "nested service specifications not supported in service file \"%s\", line %d\n" msgstr "geschachtelte »service«-Definitionen werden nicht unterstützt in Servicedatei »%s«, Zeile %d\n" -#: fe-connect.c:4752 +#: fe-connect.c:4795 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "ungültige URI an interne Parserroutine weitergeleitet: »%s«\n" -#: fe-connect.c:4822 +#: fe-connect.c:4865 #, c-format msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" msgstr "Ende der Eingabezeichenkette gefunden beim Suchen nach passendem »]« in IPv6-Hostadresse in URI: »%s«\n" -#: fe-connect.c:4829 +#: fe-connect.c:4872 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "IPv6-Hostadresse darf nicht leer sein in URI: »%s«\n" -#: fe-connect.c:4844 +#: fe-connect.c:4887 #, c-format msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" msgstr "unerwartetes Zeichen »%c« an Position %d in URI (»:« oder »/« erwartet): »%s«\n" -#: fe-connect.c:4958 +#: fe-connect.c:5001 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "zusätzliches Schlüssel/Wert-Trennzeichen »=« in URI-Query-Parameter: »%s«\n" -#: fe-connect.c:4978 +#: fe-connect.c:5021 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "fehlendes Schlüssel/Wert-Trennzeichen »=« in URI-Query-Parameter: »%s«\n" -#: fe-connect.c:5029 +#: fe-connect.c:5072 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "ungültiger URI-Query-Parameter: »%s«\n" -#: fe-connect.c:5103 +#: fe-connect.c:5146 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "ungültiges Prozent-kodiertes Token: »%s«\n" -#: fe-connect.c:5113 +#: fe-connect.c:5156 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "verbotener Wert %%00 in Prozent-kodiertem Wert: »%s«\n" -#: fe-connect.c:5447 +#: fe-connect.c:5490 msgid "connection pointer is NULL\n" msgstr "Verbindung ist ein NULL-Zeiger\n" -#: fe-connect.c:5745 +#: fe-connect.c:5788 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "WARNUNG: Passwortdatei »%s« ist keine normale Datei\n" -#: fe-connect.c:5754 +#: fe-connect.c:5797 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "WARNUNG: Passwortdatei »%s« erlaubt Lesezugriff für Gruppe oder Andere; Rechte sollten u=rw (0600) oder weniger sein\n" -#: fe-connect.c:5860 +#: fe-connect.c:5911 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "Passwort wurde aus Datei »%s« gelesen\n" @@ -445,98 +434,98 @@ msgstr "Passwort wurde aus Datei »%s« gelesen\n" msgid "NOTICE" msgstr "HINWEIS" -#: fe-exec.c:1123 fe-exec.c:1181 fe-exec.c:1227 +#: fe-exec.c:1141 fe-exec.c:1199 fe-exec.c:1245 msgid "command string is a null pointer\n" msgstr "Befehlszeichenkette ist ein NULL-Zeiger\n" -#: fe-exec.c:1187 fe-exec.c:1233 fe-exec.c:1328 +#: fe-exec.c:1205 fe-exec.c:1251 fe-exec.c:1346 msgid "number of parameters must be between 0 and 65535\n" msgstr "Anzahl der Parameter muss zwischen 0 und 65535 sein\n" -#: fe-exec.c:1221 fe-exec.c:1322 +#: fe-exec.c:1239 fe-exec.c:1340 msgid "statement name is a null pointer\n" msgstr "Anweisungsname ist ein NULL-Zeiger\n" -#: fe-exec.c:1241 fe-exec.c:1405 fe-exec.c:2123 fe-exec.c:2322 +#: fe-exec.c:1259 fe-exec.c:1422 fe-exec.c:2140 fe-exec.c:2339 msgid "function requires at least protocol version 3.0\n" msgstr "Funktion erfordert mindestens Protokollversion 3.0\n" -#: fe-exec.c:1359 +#: fe-exec.c:1377 msgid "no connection to the server\n" msgstr "keine Verbindung mit dem Server\n" -#: fe-exec.c:1366 +#: fe-exec.c:1384 msgid "another command is already in progress\n" msgstr "ein anderer Befehl ist bereits in Ausführung\n" -#: fe-exec.c:1481 +#: fe-exec.c:1498 msgid "length must be given for binary parameter\n" msgstr "für binäre Parameter muss eine Länge angegeben werden\n" -#: fe-exec.c:1753 +#: fe-exec.c:1770 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "unerwarteter asyncStatus: %d\n" -#: fe-exec.c:1773 +#: fe-exec.c:1790 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc »%s« während PGEVT_RESULTCREATE-Ereignis fehlgeschlagen\n" -#: fe-exec.c:1933 +#: fe-exec.c:1950 msgid "COPY terminated by new PQexec" msgstr "COPY von neuem PQexec beendet" -#: fe-exec.c:1941 +#: fe-exec.c:1958 msgid "COPY IN state must be terminated first\n" msgstr "COPY-IN-Zustand muss erst beendet werden\n" -#: fe-exec.c:1961 +#: fe-exec.c:1978 msgid "COPY OUT state must be terminated first\n" msgstr "COPY-OUT-Zustand muss erst beendet werden\n" -#: fe-exec.c:1969 +#: fe-exec.c:1986 msgid "PQexec not allowed during COPY BOTH\n" msgstr "PQexec ist während COPY BOTH nicht erlaubt\n" -#: fe-exec.c:2212 fe-exec.c:2279 fe-exec.c:2369 fe-protocol2.c:1352 +#: fe-exec.c:2229 fe-exec.c:2296 fe-exec.c:2386 fe-protocol2.c:1352 #: fe-protocol3.c:1817 msgid "no COPY in progress\n" msgstr "keine COPY in Ausführung\n" -#: fe-exec.c:2559 +#: fe-exec.c:2576 msgid "connection in wrong state\n" msgstr "Verbindung im falschen Zustand\n" -#: fe-exec.c:2590 +#: fe-exec.c:2607 msgid "invalid ExecStatusType code" msgstr "ungültiger ExecStatusType-Kode" -#: fe-exec.c:2617 +#: fe-exec.c:2634 msgid "PGresult is not an error result\n" msgstr "PGresult ist kein Fehlerresultat\n" -#: fe-exec.c:2692 fe-exec.c:2715 +#: fe-exec.c:2709 fe-exec.c:2732 #, c-format msgid "column number %d is out of range 0..%d" msgstr "Spaltennummer %d ist außerhalb des zulässigen Bereichs 0..%d" -#: fe-exec.c:2708 +#: fe-exec.c:2725 #, c-format msgid "row number %d is out of range 0..%d" msgstr "Zeilennummer %d ist außerhalb des zulässigen Bereichs 0..%d" -#: fe-exec.c:2730 +#: fe-exec.c:2747 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "Parameternummer %d ist außerhalb des zulässigen Bereichs 0..%d" -#: fe-exec.c:3040 +#: fe-exec.c:3057 #, c-format msgid "could not interpret result from server: %s" msgstr "konnte Ergebnis vom Server nicht interpretieren: %s" -#: fe-exec.c:3279 fe-exec.c:3363 +#: fe-exec.c:3296 fe-exec.c:3380 msgid "incomplete multibyte character\n" msgstr "unvollständiges Mehrbyte-Zeichen\n" @@ -637,7 +626,7 @@ msgstr "Integer der Größe %lu wird von pqPutInt nicht unterstützt" msgid "connection not open\n" msgstr "Verbindung nicht offen\n" -#: fe-misc.c:812 fe-secure-openssl.c:270 fe-secure-openssl.c:379 +#: fe-misc.c:812 fe-secure-openssl.c:231 fe-secure-openssl.c:340 #: fe-secure.c:253 fe-secure.c:362 msgid "" "server closed the connection unexpectedly\n" @@ -837,153 +826,148 @@ msgstr "ZEILE %d: " msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: Text COPY OUT nicht ausgeführt\n" -#: fe-secure-openssl.c:146 fe-secure-openssl.c:1030 fe-secure-openssl.c:1250 -#, c-format -msgid "could not acquire mutex: %s\n" -msgstr "konnte Mutex nicht sperren: %s\n" - -#: fe-secure-openssl.c:158 -#, c-format -msgid "could not establish SSL connection: %s\n" -msgstr "konnte SSL-Verbindung nicht aufbauen: %s\n" - -#: fe-secure-openssl.c:275 fe-secure-openssl.c:384 fe-secure-openssl.c:1376 +#: fe-secure-openssl.c:236 fe-secure-openssl.c:345 fe-secure-openssl.c:1323 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "SSL-SYSCALL-Fehler: %s\n" -#: fe-secure-openssl.c:282 fe-secure-openssl.c:391 fe-secure-openssl.c:1380 +#: fe-secure-openssl.c:243 fe-secure-openssl.c:352 fe-secure-openssl.c:1327 msgid "SSL SYSCALL error: EOF detected\n" msgstr "SSL-SYSCALL-Fehler: Dateiende entdeckt\n" -#: fe-secure-openssl.c:293 fe-secure-openssl.c:402 fe-secure-openssl.c:1389 +#: fe-secure-openssl.c:254 fe-secure-openssl.c:363 fe-secure-openssl.c:1336 #, c-format msgid "SSL error: %s\n" msgstr "SSL-Fehler: %s\n" -#: fe-secure-openssl.c:308 fe-secure-openssl.c:417 +#: fe-secure-openssl.c:269 fe-secure-openssl.c:378 msgid "SSL connection has been closed unexpectedly\n" msgstr "SSL-Verbindung wurde unerwartet geschlossen\n" -#: fe-secure-openssl.c:314 fe-secure-openssl.c:423 fe-secure-openssl.c:1398 +#: fe-secure-openssl.c:275 fe-secure-openssl.c:384 fe-secure-openssl.c:1345 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "unbekannter SSL-Fehlercode: %d\n" -#: fe-secure-openssl.c:535 +#: fe-secure-openssl.c:495 msgid "SSL certificate's name entry is missing\n" msgstr "Namenseintrag fehlt im SSL-Zertifikat\n" -#: fe-secure-openssl.c:565 +#: fe-secure-openssl.c:529 msgid "SSL certificate's name contains embedded null\n" msgstr "Name im SSL-Zertifikat enthält Null-Byte\n" -#: fe-secure-openssl.c:616 +#: fe-secure-openssl.c:580 msgid "host name must be specified for a verified SSL connection\n" msgstr "Hostname muss angegeben werden für eine verifizierte SSL-Verbindung\n" -#: fe-secure-openssl.c:716 +#: fe-secure-openssl.c:680 #, c-format msgid "server certificate for \"%s\" does not match host name \"%s\"\n" msgstr "Server-Zertifikat für »%s« stimmt nicht mit dem Hostnamen »%s« überein\n" -#: fe-secure-openssl.c:722 +#: fe-secure-openssl.c:686 msgid "could not get server's host name from server certificate\n" msgstr "konnte Hostnamen des Servers nicht aus dem Serverzertifikat ermitteln\n" -#: fe-secure-openssl.c:869 +#: fe-secure-openssl.c:930 #, c-format msgid "could not create SSL context: %s\n" msgstr "konnte SSL-Kontext nicht erzeugen: %s\n" -#: fe-secure-openssl.c:1000 +#: fe-secure-openssl.c:967 +#, c-format +msgid "could not read root certificate file \"%s\": %s\n" +msgstr "konnte Root-Zertifikat-Datei »%s« nicht lesen: %s\n" + +#: fe-secure-openssl.c:995 +#, c-format +msgid "SSL library does not support CRL certificates (file \"%s\")\n" +msgstr "SSL-Bibliothek unterstützt keine CRL-Zertifikate (Datei »%s«)\n" + +#: fe-secure-openssl.c:1023 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"konnte Home-Verzeichnis nicht ermitteln, um Root-Zertifikat-Datei zu finden\n" +"Legen Sie entweder die Datei an oder ändern Sie sslmode, um die Überprüfung der Serverzertifikate abzuschalten.\n" + +#: fe-secure-openssl.c:1027 +#, c-format +msgid "" +"root certificate file \"%s\" does not exist\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"Root-Zertifikat-Datei »%s« existiert nicht\n" +"Legen Sie entweder die Datei an oder ändern Sie sslmode, um die Überprüfung der Serverzertifikate abzuschalten.\n" + +#: fe-secure-openssl.c:1058 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "konnte Zertifikatdatei »%s« nicht öffnen: %s\n" -#: fe-secure-openssl.c:1039 fe-secure-openssl.c:1054 +#: fe-secure-openssl.c:1077 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "konnte Zertifikatdatei »%s« nicht lesen: %s\n" -#: fe-secure-openssl.c:1109 +#: fe-secure-openssl.c:1101 +#, c-format +msgid "could not establish SSL connection: %s\n" +msgstr "konnte SSL-Verbindung nicht aufbauen: %s\n" + +#: fe-secure-openssl.c:1155 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "konnte SSL-Engine »%s« nicht laden: %s\n" -#: fe-secure-openssl.c:1121 +#: fe-secure-openssl.c:1167 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "konnte SSL-Engine »%s« nicht initialisieren: %s\n" -#: fe-secure-openssl.c:1137 +#: fe-secure-openssl.c:1183 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "konnte privaten SSL-Schlüssel »%s« nicht von Engine »%s« lesen: %s\n" -#: fe-secure-openssl.c:1151 +#: fe-secure-openssl.c:1197 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "konnte privaten SSL-Schlüssel »%s« nicht von Engine »%s« laden: %s\n" -#: fe-secure-openssl.c:1188 +#: fe-secure-openssl.c:1234 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "Zertifikat vorhanden, aber keine private Schlüsseldatei »%s«\n" -#: fe-secure-openssl.c:1196 +#: fe-secure-openssl.c:1242 #, c-format msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "WARNUNG: private Schlüsseldatei »%s« erlaubt Lesezugriff für Gruppe oder Andere; Rechte sollten u=rw (0600) oder weniger sein\n" -#: fe-secure-openssl.c:1207 +#: fe-secure-openssl.c:1253 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "konnte private Schlüsseldatei »%s« nicht laden: %s\n" -#: fe-secure-openssl.c:1221 +#: fe-secure-openssl.c:1267 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "Zertifikat passt nicht zur privaten Schlüsseldatei »%s«: %s\n" -#: fe-secure-openssl.c:1259 -#, c-format -msgid "could not read root certificate file \"%s\": %s\n" -msgstr "konnte Root-Zertifikat-Datei »%s« nicht lesen: %s\n" - -#: fe-secure-openssl.c:1289 -#, c-format -msgid "SSL library does not support CRL certificates (file \"%s\")\n" -msgstr "SSL-Bibliothek unterstützt keine CRL-Zertifikate (Datei »%s«)\n" - -#: fe-secure-openssl.c:1322 -msgid "" -"could not get home directory to locate root certificate file\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" -msgstr "" -"konnte Home-Verzeichnis nicht ermitteln, um Root-Zertifikat-Datei zu finden\n" -"Legen Sie entweder die Datei an oder ändern Sie sslmode, um die Überprüfung der Serverzertifikate abzuschalten.\n" - -#: fe-secure-openssl.c:1326 -#, c-format -msgid "" -"root certificate file \"%s\" does not exist\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" -msgstr "" -"Root-Zertifikat-Datei »%s« existiert nicht\n" -"Legen Sie entweder die Datei an oder ändern Sie sslmode, um die Überprüfung der Serverzertifikate abzuschalten.\n" - -#: fe-secure-openssl.c:1419 +#: fe-secure-openssl.c:1366 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "Zertifikat konnte nicht ermittelt werden: %s\n" -#: fe-secure-openssl.c:1511 +#: fe-secure-openssl.c:1458 #, c-format msgid "no SSL error reported" msgstr "kein SSL-Fehler berichtet" -#: fe-secure-openssl.c:1520 +#: fe-secure-openssl.c:1467 #, c-format msgid "SSL error code %lu" msgstr "SSL-Fehlercode %lu" diff --git a/src/interfaces/libpq/po/es.po b/src/interfaces/libpq/po/es.po index e319e6dd7b..4543d6f387 100644 --- a/src/interfaces/libpq/po/es.po +++ b/src/interfaces/libpq/po/es.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: libpq (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-06 13:08-0500\n" +"POT-Creation-Date: 2017-08-27 21:47+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" @@ -25,7 +25,7 @@ msgstr "" msgid "GSSAPI continuation error" msgstr "error en continuación de GSSAPI" -#: fe-auth.c:177 fe-auth.c:412 +#: fe-auth.c:177 fe-auth.c:417 msgid "host name must be specified\n" msgstr "el nombre de servidor debe ser especificado\n" @@ -33,14 +33,15 @@ msgstr "el nombre de servidor debe ser especificado\n" msgid "duplicate GSS authentication request\n" msgstr "petición de autentificación GSS duplicada\n" -#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:383 fe-auth.c:418 fe-auth.c:514 -#: fe-auth.c:780 fe-connect.c:707 fe-connect.c:904 fe-connect.c:1080 -#: fe-connect.c:2091 fe-connect.c:3484 fe-connect.c:3736 fe-connect.c:3855 -#: fe-connect.c:4095 fe-connect.c:4175 fe-connect.c:4274 fe-connect.c:4526 -#: fe-connect.c:4555 fe-connect.c:4627 fe-connect.c:4645 fe-connect.c:4741 -#: fe-connect.c:5075 fe-connect.c:5225 fe-exec.c:2634 fe-exec.c:3381 -#: fe-exec.c:3546 fe-lobj.c:896 fe-protocol2.c:1206 fe-protocol3.c:992 -#: fe-protocol3.c:1678 fe-secure-openssl.c:551 fe-secure-openssl.c:1093 +#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:388 fe-auth.c:423 fe-auth.c:519 +#: fe-auth.c:798 fe-connect.c:767 fe-connect.c:964 fe-connect.c:1140 +#: fe-connect.c:2141 fe-connect.c:3499 fe-connect.c:3751 fe-connect.c:3870 +#: fe-connect.c:4110 fe-connect.c:4190 fe-connect.c:4289 fe-connect.c:4545 +#: fe-connect.c:4574 fe-connect.c:4646 fe-connect.c:4670 fe-connect.c:4688 +#: fe-connect.c:4784 fe-connect.c:5118 fe-connect.c:5268 fe-exec.c:2651 +#: fe-exec.c:3398 fe-exec.c:3563 fe-lobj.c:896 fe-protocol2.c:1206 +#: fe-protocol3.c:992 fe-protocol3.c:1678 fe-secure-openssl.c:515 +#: fe-secure-openssl.c:1139 msgid "out of memory\n" msgstr "memoria agotada\n" @@ -52,72 +53,78 @@ msgstr "error en conversión de nombre GSSAPI" msgid "SSPI continuation error" msgstr "error en continuación de SSPI" -#: fe-auth.c:398 +#: fe-auth.c:378 +msgid "duplicate SSPI authentication request\n" +msgstr "petición de autentificación SSPI duplicada\n" + +#: fe-auth.c:403 msgid "could not acquire SSPI credentials" msgstr "no se pudo obtener las credenciales SSPI" -#: fe-auth.c:489 +#: fe-auth.c:494 msgid "SCM_CRED authentication method not supported\n" msgstr "el método de autentificación SCM_CRED no está soportado\n" -#: fe-auth.c:565 +#: fe-auth.c:570 msgid "Kerberos 4 authentication not supported\n" msgstr "el método de autentificación Kerberos 4 no está soportado\n" -#: fe-auth.c:570 +#: fe-auth.c:575 msgid "Kerberos 5 authentication not supported\n" msgstr "el método de autentificación Kerberos 5 no está soportado\n" -#: fe-auth.c:641 +#: fe-auth.c:646 msgid "GSSAPI authentication not supported\n" msgstr "el método de autentificación GSSAPI no está soportado\n" -#: fe-auth.c:673 +#: fe-auth.c:678 msgid "SSPI authentication not supported\n" msgstr "el método de autentificación SSPI no está soportado\n" -#: fe-auth.c:681 +#: fe-auth.c:686 msgid "Crypt authentication not supported\n" msgstr "el método de autentificación Crypt no está soportado\n" -#: fe-auth.c:708 +#: fe-auth.c:721 +msgid "SCRAM authentication requires libpq version 10 or above\n" +msgstr "la autentificación SCRAM requiere la versión de libpq 10 o superior\n" + +#: fe-auth.c:726 #, c-format msgid "authentication method %u not supported\n" msgstr "el método de autentificación %u no está soportado\n" -#: fe-auth.c:755 +#: fe-auth.c:773 #, c-format msgid "user name lookup failure: error code %lu\n" msgstr "fallo en la búsqueda del nombre de usuario: código de error %lu\n" -#: fe-auth.c:765 fe-connect.c:2018 +#: fe-auth.c:783 fe-connect.c:2068 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "no se pudo buscar el usuario local de ID %d: %s\n" -#: fe-auth.c:770 fe-connect.c:2023 +#: fe-auth.c:788 fe-connect.c:2073 #, c-format msgid "local user with ID %d does not exist\n" msgstr "no existe un usuario local con ID %d\n" -#: fe-connect.c:846 +#: fe-connect.c:906 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "valor sslmode no válido: «%s»\n" -#: fe-connect.c:867 +#: fe-connect.c:927 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" -msgstr "" -"el valor sslmode «%s» no es válido cuando no se ha compilado con soporte " -"SSL\n" +msgstr "el valor sslmode «%s» no es válido cuando no se ha compilado con soporte SSL\n" -#: fe-connect.c:1104 +#: fe-connect.c:1164 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "no se pudo establecer el socket en modo TCP sin retardo: %s\n" -#: fe-connect.c:1134 +#: fe-connect.c:1194 #, c-format msgid "" "could not connect to server: %s\n" @@ -128,7 +135,7 @@ msgstr "" "\t¿Está el servidor en ejecución localmente y aceptando\n" "\tconexiones en el socket de dominio Unix «%s»?\n" -#: fe-connect.c:1189 +#: fe-connect.c:1249 #, c-format msgid "" "could not connect to server: %s\n" @@ -139,7 +146,7 @@ msgstr "" "\t¿Está el servidor en ejecución en el servidor «%s» (%s) y aceptando\n" "\tconexiones TCP/IP en el puerto %s?\n" -#: fe-connect.c:1198 +#: fe-connect.c:1258 #, c-format msgid "" "could not connect to server: %s\n" @@ -150,328 +157,280 @@ msgstr "" "\t¿Está el servidor en ejecución en el servidor «%s» y aceptando\n" "\tconexiones TCP/IP en el puerto %s?\n" -#: fe-connect.c:1249 -#, c-format -msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" -msgstr "setsockopt(TCP_KEEPIDLE) falló: %s\n" - -#: fe-connect.c:1262 -#, c-format -msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" -msgstr "setsockopt(TCP_KEEPALIVE) falló: %s\n" - -#: fe-connect.c:1294 -#, c-format -msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" -msgstr "setsockopt(TCP_KEEPINTVL) falló: %s\n" - -#: fe-connect.c:1326 +#: fe-connect.c:1309 fe-connect.c:1341 fe-connect.c:1374 fe-connect.c:1841 #, c-format -msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" -msgstr "setsockopt(TCP_KEEPCNT) falló: %s\n" +msgid "setsockopt(%s) failed: %s\n" +msgstr "setsockopt(%s) falló: %s\n" -#: fe-connect.c:1374 +#: fe-connect.c:1423 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" -#: fe-connect.c:1426 +#: fe-connect.c:1475 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "número de puerto no válido: «%s»\n" -#: fe-connect.c:1459 +#: fe-connect.c:1508 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" -msgstr "" -"la ruta del socket de dominio Unix «%s» es demasiado larga (máximo %d " -"bytes)\n" +msgstr "la ruta del socket de dominio Unix «%s» es demasiado larga (máximo %d bytes)\n" -#: fe-connect.c:1478 +#: fe-connect.c:1527 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "no se pudo traducir el nombre «%s» a una dirección: %s\n" -#: fe-connect.c:1482 +#: fe-connect.c:1531 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "no se pudo traducir la ruta del socket Unix «%s» a una dirección: %s\n" -#: fe-connect.c:1687 +#: fe-connect.c:1736 msgid "invalid connection state, probably indicative of memory corruption\n" -msgstr "" -"el estado de conexión no es válido, probablemente por corrupción de memoria\n" +msgstr "el estado de conexión no es válido, probablemente por corrupción de memoria\n" -#: fe-connect.c:1727 +#: fe-connect.c:1776 #, c-format msgid "could not create socket: %s\n" msgstr "no se pudo crear el socket: %s\n" -#: fe-connect.c:1749 +#: fe-connect.c:1798 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "no se pudo establecer el socket en modo no bloqueante: %s\n" -#: fe-connect.c:1760 +#: fe-connect.c:1809 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "no se pudo poner el socket en modo close-on-exec: %s\n" -#: fe-connect.c:1779 +#: fe-connect.c:1828 msgid "keepalives parameter must be an integer\n" msgstr "el parámetro de keepalives debe ser un entero\n" -#: fe-connect.c:1792 -#, c-format -msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" -msgstr "setsockopt(SO_KEEPALIVE) falló: %s\n" - -#: fe-connect.c:1929 +#: fe-connect.c:1979 #, c-format msgid "could not get socket error status: %s\n" msgstr "no se pudo determinar el estado de error del socket: %s\n" -#: fe-connect.c:1963 +#: fe-connect.c:2013 #, c-format msgid "could not get client address from socket: %s\n" msgstr "no se pudo obtener la dirección del cliente desde el socket: %s\n" -#: fe-connect.c:2005 +#: fe-connect.c:2055 msgid "requirepeer parameter is not supported on this platform\n" msgstr "el parámetro requirepeer no está soportado en esta plataforma\n" -#: fe-connect.c:2008 +#: fe-connect.c:2058 #, c-format msgid "could not get peer credentials: %s\n" msgstr "no se pudo obtener credenciales de la contraparte: %s\n" -#: fe-connect.c:2031 +#: fe-connect.c:2081 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" -msgstr "" -"requirepeer especifica «%s», pero el nombre de usuario de la contraparte es " -"«%s»\n" +msgstr "requirepeer especifica «%s», pero el nombre de usuario de la contraparte es «%s»\n" -#: fe-connect.c:2065 +#: fe-connect.c:2115 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "no se pudo enviar el paquete de negociación SSL: %s\n" -#: fe-connect.c:2104 +#: fe-connect.c:2154 #, c-format msgid "could not send startup packet: %s\n" msgstr "no se pudo enviar el paquete de inicio: %s\n" -#: fe-connect.c:2174 +#: fe-connect.c:2224 msgid "server does not support SSL, but SSL was required\n" msgstr "el servidor no soporta SSL, pero SSL es requerida\n" -#: fe-connect.c:2200 +#: fe-connect.c:2250 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "se ha recibido una respuesta no válida en la negociación SSL: %c\n" -#: fe-connect.c:2275 fe-connect.c:2308 +#: fe-connect.c:2325 fe-connect.c:2358 #, c-format msgid "expected authentication request from server, but received %c\n" -msgstr "" -"se esperaba una petición de autentificación desde el servidor, pero se ha " -"recibido %c\n" +msgstr "se esperaba una petición de autentificación desde el servidor, pero se ha recibido %c\n" -#: fe-connect.c:2475 +#: fe-connect.c:2525 #, c-format msgid "out of memory allocating GSSAPI buffer (%d)" msgstr "memoria agotada creando el búfer GSSAPI (%d)" -#: fe-connect.c:2560 +#: fe-connect.c:2610 msgid "unexpected message from server during startup\n" msgstr "se ha recibido un mensaje inesperado del servidor durante el inicio\n" -#: fe-connect.c:2654 +#: fe-connect.c:2704 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" -msgstr "" -"estado de conexión no válido %d, probablemente por corrupción de memoria\n" +msgstr "estado de conexión no válido %d, probablemente por corrupción de memoria\n" -#: fe-connect.c:3090 fe-connect.c:3150 +#: fe-connect.c:3105 fe-connect.c:3165 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc «%s» falló durante el evento PGEVT_CONNRESET\n" -#: fe-connect.c:3497 +#: fe-connect.c:3512 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "URL LDAP no válida «%s»: el esquema debe ser ldap://\n" -#: fe-connect.c:3512 +#: fe-connect.c:3527 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "URL LDAP no válida «%s»: distinguished name faltante\n" -#: fe-connect.c:3523 fe-connect.c:3576 +#: fe-connect.c:3538 fe-connect.c:3591 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "URL LDAP no válida «%s»: debe tener exactamente un atributo\n" -#: fe-connect.c:3533 fe-connect.c:3590 +#: fe-connect.c:3548 fe-connect.c:3605 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" -msgstr "" -"URL LDAP no válida «%s»: debe tener ámbito de búsqueda (base/one/sub)\n" +msgstr "URL LDAP no válida «%s»: debe tener ámbito de búsqueda (base/one/sub)\n" -#: fe-connect.c:3544 +#: fe-connect.c:3559 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "URL LDAP no válida «%s»: no tiene filtro\n" -#: fe-connect.c:3565 +#: fe-connect.c:3580 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "URL LDAP no válida «%s»: número de puerto no válido\n" -#: fe-connect.c:3599 +#: fe-connect.c:3614 msgid "could not create LDAP structure\n" msgstr "no se pudo crear estructura LDAP\n" -#: fe-connect.c:3675 +#: fe-connect.c:3690 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "búsqueda en servidor LDAP falló: %s\n" -#: fe-connect.c:3686 +#: fe-connect.c:3701 msgid "more than one entry found on LDAP lookup\n" msgstr "se encontro más de una entrada en búsqueda LDAP\n" -#: fe-connect.c:3687 fe-connect.c:3699 +#: fe-connect.c:3702 fe-connect.c:3714 msgid "no entry found on LDAP lookup\n" msgstr "no se encontró ninguna entrada en búsqueda LDAP\n" -#: fe-connect.c:3710 fe-connect.c:3723 +#: fe-connect.c:3725 fe-connect.c:3738 msgid "attribute has no values on LDAP lookup\n" msgstr "la búsqueda LDAP entregó atributo sin valores\n" -#: fe-connect.c:3775 fe-connect.c:3794 fe-connect.c:4313 +#: fe-connect.c:3790 fe-connect.c:3809 fe-connect.c:4328 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "falta «=» después de «%s» en la cadena de información de la conexión\n" -#: fe-connect.c:3867 fe-connect.c:4494 fe-connect.c:5208 +#: fe-connect.c:3882 fe-connect.c:4513 fe-connect.c:5251 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "opción de conexión no válida «%s»\n" -#: fe-connect.c:3883 fe-connect.c:4362 +#: fe-connect.c:3898 fe-connect.c:4377 msgid "unterminated quoted string in connection info string\n" -msgstr "" -"cadena de caracteres entre comillas sin terminar en la cadena de información " -"de conexión\n" +msgstr "cadena de caracteres entre comillas sin terminar en la cadena de información de conexión\n" -#: fe-connect.c:3923 +#: fe-connect.c:3938 msgid "could not get home directory to locate service definition file" -msgstr "" -"no se pudo obtener el directorio home para localizar el archivo de " -"definición de servicio" +msgstr "no se pudo obtener el directorio home para localizar el archivo de definición de servicio" -#: fe-connect.c:3956 +#: fe-connect.c:3971 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "la definición de servicio «%s» no fue encontrada\n" -#: fe-connect.c:3979 +#: fe-connect.c:3994 #, c-format msgid "service file \"%s\" not found\n" msgstr "el archivo de servicio «%s» no fue encontrado\n" -#: fe-connect.c:3992 +#: fe-connect.c:4007 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "la línea %d es demasiado larga en archivo de servicio «%s»\n" -#: fe-connect.c:4063 fe-connect.c:4107 +#: fe-connect.c:4078 fe-connect.c:4122 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "error de sintaxis en archivo de servicio «%s», línea %d\n" -#: fe-connect.c:4074 +#: fe-connect.c:4089 #, c-format -msgid "" -"nested service specifications not supported in service file \"%s\", line %d\n" -msgstr "" -"especificaciones de servicio anidadas no soportadas en archivo de servicio " -"«%s», línea %d\n" +msgid "nested service specifications not supported in service file \"%s\", line %d\n" +msgstr "especificaciones de servicio anidadas no soportadas en archivo de servicio «%s», línea %d\n" -#: fe-connect.c:4752 +#: fe-connect.c:4795 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "URI no válida propagada a rutina interna de procesamiento: «%s»\n" -#: fe-connect.c:4822 +#: fe-connect.c:4865 #, c-format -msgid "" -"end of string reached when looking for matching \"]\" in IPv6 host address " -"in URI: \"%s\"\n" -msgstr "" -"se encontró el fin de la cadena mientras se buscaba el «]» correspondiente " -"en dirección IPv6 en URI: «%s»\n" +msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" +msgstr "se encontró el fin de la cadena mientras se buscaba el «]» correspondiente en dirección IPv6 en URI: «%s»\n" -#: fe-connect.c:4829 +#: fe-connect.c:4872 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "la dirección IPv6 no puede ser vacía en la URI: «%s»\n" -#: fe-connect.c:4844 +#: fe-connect.c:4887 #, c-format -msgid "" -"unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): " -"\"%s\"\n" -msgstr "" -"carácter «%c» inesperado en la posición %d en URI (se esperaba «:» o «/»): " -"«%s»\n" +msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" +msgstr "carácter «%c» inesperado en la posición %d en URI (se esperaba «:» o «/»): «%s»\n" -#: fe-connect.c:4958 +#: fe-connect.c:5001 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "separador llave/valor «=» extra en parámetro de la URI: «%s»\n" -#: fe-connect.c:4978 +#: fe-connect.c:5021 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "separador llave/valor «=» faltante en parámetro de la URI: «%s»\n" -#: fe-connect.c:5029 +#: fe-connect.c:5072 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "parámetro de URI no válido: «%s»\n" -#: fe-connect.c:5103 +#: fe-connect.c:5146 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "elemento escapado con %% no válido: «%s»\n" -#: fe-connect.c:5113 +#: fe-connect.c:5156 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "valor no permitido %%00 en valor escapado con %%: «%s»\n" -#: fe-connect.c:5447 +#: fe-connect.c:5490 msgid "connection pointer is NULL\n" msgstr "el puntero de conexión es NULL\n" -#: fe-connect.c:5745 +#: fe-connect.c:5788 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "ADVERTENCIA: El archivo de claves «%s» no es un archivo plano\n" -#: fe-connect.c:5754 +#: fe-connect.c:5797 #, c-format -msgid "" -"WARNING: password file \"%s\" has group or world access; permissions should " -"be u=rw (0600) or less\n" -msgstr "" -"ADVERTENCIA: El archivo de claves «%s» tiene permiso de lectura para el " -"grupo u otros; los permisos deberían ser u=rw (0600) o menos\n" +msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" +msgstr "ADVERTENCIA: El archivo de claves «%s» tiene permiso de lectura para el grupo u otros; los permisos deberían ser u=rw (0600) o menos\n" -#: fe-connect.c:5860 +#: fe-connect.c:5911 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "contraseña obtenida desde el archivo «%s»\n" @@ -480,99 +439,98 @@ msgstr "contraseña obtenida desde el archivo «%s»\n" msgid "NOTICE" msgstr "AVISO" -#: fe-exec.c:1123 fe-exec.c:1181 fe-exec.c:1227 +#: fe-exec.c:1141 fe-exec.c:1199 fe-exec.c:1245 msgid "command string is a null pointer\n" msgstr "la cadena de orden es un puntero nulo\n" -#: fe-exec.c:1187 fe-exec.c:1233 fe-exec.c:1328 +#: fe-exec.c:1205 fe-exec.c:1251 fe-exec.c:1346 msgid "number of parameters must be between 0 and 65535\n" msgstr "el número de parámetros debe estar entre 0 y 65535\n" -#: fe-exec.c:1221 fe-exec.c:1322 +#: fe-exec.c:1239 fe-exec.c:1340 msgid "statement name is a null pointer\n" msgstr "el nombre de sentencia es un puntero nulo\n" -#: fe-exec.c:1241 fe-exec.c:1405 fe-exec.c:2123 fe-exec.c:2322 +#: fe-exec.c:1259 fe-exec.c:1422 fe-exec.c:2140 fe-exec.c:2339 msgid "function requires at least protocol version 3.0\n" msgstr "la función requiere protocolo 3.0 o superior\n" -#: fe-exec.c:1359 +#: fe-exec.c:1377 msgid "no connection to the server\n" msgstr "no hay conexión con el servidor\n" -#: fe-exec.c:1366 +#: fe-exec.c:1384 msgid "another command is already in progress\n" msgstr "hay otra orden en ejecución\n" -#: fe-exec.c:1481 +#: fe-exec.c:1498 msgid "length must be given for binary parameter\n" msgstr "el largo debe ser especificado para un parámetro binario\n" -#: fe-exec.c:1753 +#: fe-exec.c:1770 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "asyncStatus no esperado: %d\n" -#: fe-exec.c:1773 +#: fe-exec.c:1790 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc «%s» falló durante el evento PGEVT_RESULTCREATE\n" -#: fe-exec.c:1933 +#: fe-exec.c:1950 msgid "COPY terminated by new PQexec" msgstr "COPY terminado por un nuevo PQexec" -#: fe-exec.c:1941 +#: fe-exec.c:1958 msgid "COPY IN state must be terminated first\n" msgstr "el estado COPY IN debe ser terminado primero\n" -#: fe-exec.c:1961 +#: fe-exec.c:1978 msgid "COPY OUT state must be terminated first\n" msgstr "el estado COPY OUT debe ser terminado primero\n" -#: fe-exec.c:1969 +#: fe-exec.c:1986 msgid "PQexec not allowed during COPY BOTH\n" msgstr "PQexec no está permitido durante COPY BOTH\n" -#: fe-exec.c:2212 fe-exec.c:2279 fe-exec.c:2369 fe-protocol2.c:1352 +#: fe-exec.c:2229 fe-exec.c:2296 fe-exec.c:2386 fe-protocol2.c:1352 #: fe-protocol3.c:1817 msgid "no COPY in progress\n" msgstr "no hay COPY alguno en ejecución\n" -#: fe-exec.c:2559 +#: fe-exec.c:2576 msgid "connection in wrong state\n" msgstr "la conexión está en un estado incorrecto\n" -#: fe-exec.c:2590 +#: fe-exec.c:2607 msgid "invalid ExecStatusType code" msgstr "el código de ExecStatusType no es válido" -#: fe-exec.c:2617 -#| msgid "result is out of range" +#: fe-exec.c:2634 msgid "PGresult is not an error result\n" msgstr "PGresult no es un resultado de error\n" -#: fe-exec.c:2692 fe-exec.c:2715 +#: fe-exec.c:2709 fe-exec.c:2732 #, c-format msgid "column number %d is out of range 0..%d" msgstr "el número de columna %d está fuera del rango 0..%d" -#: fe-exec.c:2708 +#: fe-exec.c:2725 #, c-format msgid "row number %d is out of range 0..%d" msgstr "el número de fila %d está fuera del rango 0..%d" -#: fe-exec.c:2730 +#: fe-exec.c:2747 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "el número de parámetro %d está fuera del rango 0..%d" -#: fe-exec.c:3040 +#: fe-exec.c:3057 #, c-format msgid "could not interpret result from server: %s" msgstr "no se pudo interpretar el resultado del servidor: %s" -#: fe-exec.c:3279 fe-exec.c:3363 +#: fe-exec.c:3296 fe-exec.c:3380 msgid "incomplete multibyte character\n" msgstr "carácter multibyte incompleto\n" @@ -625,9 +583,7 @@ msgstr "no se pudo escribir a archivo «%s»: %s\n" #: fe-lobj.c:947 msgid "query to initialize large object functions did not return data\n" -msgstr "" -"la consulta para inicializar las funciones de objetos grandes no devuelve " -"datos\n" +msgstr "la consulta para inicializar las funciones de objetos grandes no devuelve datos\n" #: fe-lobj.c:996 msgid "cannot determine OID of function lo_open\n" @@ -675,7 +631,7 @@ msgstr "el entero de tamaño %lu no está soportado por pqPutInt" msgid "connection not open\n" msgstr "la conexión no está abierta\n" -#: fe-misc.c:812 fe-secure-openssl.c:270 fe-secure-openssl.c:379 +#: fe-misc.c:812 fe-secure-openssl.c:231 fe-secure-openssl.c:340 #: fe-secure.c:253 fe-secure.c:362 msgid "" "server closed the connection unexpectedly\n" @@ -691,7 +647,6 @@ msgid "timeout expired\n" msgstr "tiempo de espera agotado\n" #: fe-misc.c:1061 -#| msgid "invalid symbol" msgid "invalid socket\n" msgstr "socket no válido\n" @@ -703,9 +658,7 @@ msgstr "select() fallida: %s\n" #: fe-protocol2.c:91 #, c-format msgid "invalid setenv state %c, probably indicative of memory corruption\n" -msgstr "" -"el estado de setenv %c no es válido, probablemente por corrupción de " -"memoria\n" +msgstr "el estado de setenv %c no es válido, probablemente por corrupción de memoria\n" #: fe-protocol2.c:390 #, c-format @@ -717,43 +670,31 @@ msgstr "el estado %c no es válido, probablemente por corrupción de memoria\n" msgid "message type 0x%02x arrived from server while idle" msgstr "un mensaje de tipo 0x%02x llegó del servidor estando inactivo" -#: fe-protocol2.c:503 fe-protocol2.c:538 fe-protocol2.c:1049 -#: fe-protocol3.c:209 fe-protocol3.c:236 fe-protocol3.c:253 fe-protocol3.c:333 -#: fe-protocol3.c:728 fe-protocol3.c:951 +#: fe-protocol2.c:503 fe-protocol2.c:538 fe-protocol2.c:1049 fe-protocol3.c:209 +#: fe-protocol3.c:236 fe-protocol3.c:253 fe-protocol3.c:333 fe-protocol3.c:728 +#: fe-protocol3.c:951 msgid "out of memory" msgstr "memoria agotada" #: fe-protocol2.c:529 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" -msgstr "" -"carácter %c no esperado, siguiendo una respuesta de consulta vacía (mensaje " -"«I»)" +msgstr "carácter %c no esperado, siguiendo una respuesta de consulta vacía (mensaje «I»)" #: fe-protocol2.c:595 #, c-format -msgid "" -"server sent data (\"D\" message) without prior row description (\"T\" " -"message)" -msgstr "" -"el servidor envió datos (mensaje «D») sin precederlos con una descripción de " -"fila (mensaje «T»)" +msgid "server sent data (\"D\" message) without prior row description (\"T\" message)" +msgstr "el servidor envió datos (mensaje «D») sin precederlos con una descripción de fila (mensaje «T»)" #: fe-protocol2.c:613 #, c-format -msgid "" -"server sent binary data (\"B\" message) without prior row description (\"T\" " -"message)" -msgstr "" -"el servidor envió datos binarios (mensaje «B») sin precederlos con una " -"description de fila (mensaje «T»)" +msgid "server sent binary data (\"B\" message) without prior row description (\"T\" message)" +msgstr "el servidor envió datos binarios (mensaje «B») sin precederlos con una description de fila (mensaje «T»)" #: fe-protocol2.c:633 fe-protocol3.c:412 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" -msgstr "" -"se ha recibido una respuesta inesperada del servidor; el primer carácter " -"recibido fue «%c»\n" +msgstr "se ha recibido una respuesta inesperada del servidor; el primer carácter recibido fue «%c»\n" #: fe-protocol2.c:762 fe-protocol2.c:937 fe-protocol3.c:627 fe-protocol3.c:854 msgid "out of memory for query result" @@ -775,25 +716,18 @@ msgid "protocol error: id=0x%x\n" msgstr "error de protocolo: id=0x%x\n" #: fe-protocol3.c:368 -msgid "" -"server sent data (\"D\" message) without prior row description (\"T\" " -"message)\n" -msgstr "" -"el servidor envió datos (mensaje «D») sin precederlos con una descripción de " -"fila (mensaje «T»)\n" +msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" +msgstr "el servidor envió datos (mensaje «D») sin precederlos con una descripción de fila (mensaje «T»)\n" #: fe-protocol3.c:433 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" -msgstr "" -"el contenido del mensaje no concuerda con el largo, en el mensaje tipo «%c»\n" +msgstr "el contenido del mensaje no concuerda con el largo, en el mensaje tipo «%c»\n" #: fe-protocol3.c:454 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" -msgstr "" -"se perdió la sincronía con el servidor: se recibió un mensaje de tipo «%c», " -"largo %d\n" +msgstr "se perdió la sincronía con el servidor: se recibió un mensaje de tipo «%c», largo %d\n" #: fe-protocol3.c:505 fe-protocol3.c:545 msgid "insufficient data in \"T\" message" @@ -804,7 +738,6 @@ msgid "extraneous data in \"T\" message" msgstr "datos ininteligibles en mensaje «T»" #: fe-protocol3.c:691 -#| msgid "extraneous data in \"T\" message" msgid "extraneous data in \"t\" message" msgstr "datos ininteligibles en mensaje «t»" @@ -821,7 +754,6 @@ msgid "extraneous data in \"D\" message" msgstr "datos ininteligibles en mensaje «D»" #: fe-protocol3.c:1005 -#| msgid "\\%s: error while setting variable\n" msgid "no error message available\n" msgstr "no hay mensaje de error disponible\n" @@ -899,170 +831,148 @@ msgstr "LÃNEA %d: " msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: no se está haciendo COPY OUT de texto\n" -#: fe-secure-openssl.c:146 fe-secure-openssl.c:1030 fe-secure-openssl.c:1250 -#, c-format -msgid "could not acquire mutex: %s\n" -msgstr "no se pudo adquirir el mutex: %s\n" - -#: fe-secure-openssl.c:158 -#, c-format -msgid "could not establish SSL connection: %s\n" -msgstr "no se pudo establecer conexión SSL: %s\n" - -#: fe-secure-openssl.c:275 fe-secure-openssl.c:384 fe-secure-openssl.c:1376 +#: fe-secure-openssl.c:236 fe-secure-openssl.c:345 fe-secure-openssl.c:1323 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "ERROR en llamada SSL: %s\n" -#: fe-secure-openssl.c:282 fe-secure-openssl.c:391 fe-secure-openssl.c:1380 +#: fe-secure-openssl.c:243 fe-secure-openssl.c:352 fe-secure-openssl.c:1327 msgid "SSL SYSCALL error: EOF detected\n" msgstr "ERROR en llamada SSL: detectado fin de archivo\n" -#: fe-secure-openssl.c:293 fe-secure-openssl.c:402 fe-secure-openssl.c:1389 +#: fe-secure-openssl.c:254 fe-secure-openssl.c:363 fe-secure-openssl.c:1336 #, c-format msgid "SSL error: %s\n" msgstr "error de SSL: %s\n" -#: fe-secure-openssl.c:308 fe-secure-openssl.c:417 +#: fe-secure-openssl.c:269 fe-secure-openssl.c:378 msgid "SSL connection has been closed unexpectedly\n" msgstr "la conexión SSL se ha cerrado inesperadamente\n" -#: fe-secure-openssl.c:314 fe-secure-openssl.c:423 fe-secure-openssl.c:1398 +#: fe-secure-openssl.c:275 fe-secure-openssl.c:384 fe-secure-openssl.c:1345 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "código de error SSL no reconocido: %d\n" -#: fe-secure-openssl.c:535 +#: fe-secure-openssl.c:495 msgid "SSL certificate's name entry is missing\n" msgstr "falta el elemento de nombre en el certificado SSL\n" -#: fe-secure-openssl.c:565 +#: fe-secure-openssl.c:529 msgid "SSL certificate's name contains embedded null\n" -msgstr "" -"el elemento de nombre en el certificado SSL contiene un carácter null\n" +msgstr "el elemento de nombre en el certificado SSL contiene un carácter null\n" -#: fe-secure-openssl.c:616 +#: fe-secure-openssl.c:580 msgid "host name must be specified for a verified SSL connection\n" -msgstr "" -"el nombre de servidor debe ser especificado para una conexión SSL " -"verificada\n" +msgstr "el nombre de servidor debe ser especificado para una conexión SSL verificada\n" -#: fe-secure-openssl.c:716 +#: fe-secure-openssl.c:680 #, c-format msgid "server certificate for \"%s\" does not match host name \"%s\"\n" -msgstr "" -"el certificado de servidor para «%s» no coincide con el nombre de servidor " -"«%s»\n" +msgstr "el certificado de servidor para «%s» no coincide con el nombre de servidor «%s»\n" -#: fe-secure-openssl.c:722 +#: fe-secure-openssl.c:686 msgid "could not get server's host name from server certificate\n" -msgstr "" -"no se pudo obtener el nombre de servidor desde el certificado del servidor\n" +msgstr "no se pudo obtener el nombre de servidor desde el certificado del servidor\n" -#: fe-secure-openssl.c:869 +#: fe-secure-openssl.c:930 #, c-format msgid "could not create SSL context: %s\n" msgstr "no se pudo crear un contexto SSL: %s\n" -#: fe-secure-openssl.c:1000 +#: fe-secure-openssl.c:967 +#, c-format +msgid "could not read root certificate file \"%s\": %s\n" +msgstr "no se pudo leer la lista de certificado raíz «%s»: %s\n" + +#: fe-secure-openssl.c:995 +#, c-format +msgid "SSL library does not support CRL certificates (file \"%s\")\n" +msgstr "la biblioteca SSL no soporta certificados CRL (archivo «%s»)\n" + +#: fe-secure-openssl.c:1023 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"no se pudo obtener el directorio «home» para ubicar el archivo del certificado raíz\n" +"Debe ya sea entregar este archivo, o bien cambiar sslmode para deshabilitar la verificación de certificados del servidor.\n" + +#: fe-secure-openssl.c:1027 +#, c-format +msgid "" +"root certificate file \"%s\" does not exist\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"el archivo de certificado raíz «%s» no existe\n" +"Debe ya sea entregar este archivo, o bien cambiar sslmode para deshabilitar la verificación de certificados del servidor.\n" + +#: fe-secure-openssl.c:1058 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "no se pudo abrir el archivo de certificado «%s»: %s\n" -#: fe-secure-openssl.c:1039 fe-secure-openssl.c:1054 +#: fe-secure-openssl.c:1077 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "no se pudo leer el archivo de certificado «%s»: %s\n" -#: fe-secure-openssl.c:1109 +#: fe-secure-openssl.c:1101 +#, c-format +msgid "could not establish SSL connection: %s\n" +msgstr "no se pudo establecer conexión SSL: %s\n" + +#: fe-secure-openssl.c:1155 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "no se pudo cargar el motor SSL «%s»: %s\n" -#: fe-secure-openssl.c:1121 +#: fe-secure-openssl.c:1167 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "no se pudo inicializar el motor SSL «%s»: %s\n" -#: fe-secure-openssl.c:1137 +#: fe-secure-openssl.c:1183 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" -msgstr "" -"no se pudo leer el archivo de la llave privada SSL «%s» desde el motor «%s»: " -"%s\n" +msgstr "no se pudo leer el archivo de la llave privada SSL «%s» desde el motor «%s»: %s\n" -#: fe-secure-openssl.c:1151 +#: fe-secure-openssl.c:1197 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "no se pudo leer la llave privada SSL «%s» desde el motor «%s»: %s\n" -#: fe-secure-openssl.c:1188 +#: fe-secure-openssl.c:1234 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "el certificado está presente, pero no la llave privada «%s»\n" -#: fe-secure-openssl.c:1196 +#: fe-secure-openssl.c:1242 #, c-format -msgid "" -"private key file \"%s\" has group or world access; permissions should be " -"u=rw (0600) or less\n" -msgstr "" -"el archivo de la llave privada «%s» tiene permiso de lectura para el grupo u " -"otros; los permisos deberían ser u=rw (0600) o menos\n" +msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" +msgstr "el archivo de la llave privada «%s» tiene permiso de lectura para el grupo u otros; los permisos deberían ser u=rw (0600) o menos\n" -#: fe-secure-openssl.c:1207 +#: fe-secure-openssl.c:1253 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "no se pudo cargar el archivo de la llave privada «%s»: %s\n" -#: fe-secure-openssl.c:1221 +#: fe-secure-openssl.c:1267 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "el certificado no coincide con la llave privada «%s»: %s\n" -#: fe-secure-openssl.c:1259 -#, c-format -msgid "could not read root certificate file \"%s\": %s\n" -msgstr "no se pudo leer la lista de certificado raíz «%s»: %s\n" - -#: fe-secure-openssl.c:1289 -#, c-format -msgid "SSL library does not support CRL certificates (file \"%s\")\n" -msgstr "la biblioteca SSL no soporta certificados CRL (archivo «%s»)\n" - -#: fe-secure-openssl.c:1322 -msgid "" -"could not get home directory to locate root certificate file\n" -"Either provide the file or change sslmode to disable server certificate " -"verification.\n" -msgstr "" -"no se pudo obtener el directorio «home» para ubicar el archivo del " -"certificado raíz\n" -"Debe ya sea entregar este archivo, o bien cambiar sslmode para deshabilitar " -"la verificación de certificados del servidor.\n" - -#: fe-secure-openssl.c:1326 -#, c-format -msgid "" -"root certificate file \"%s\" does not exist\n" -"Either provide the file or change sslmode to disable server certificate " -"verification.\n" -msgstr "" -"el archivo de certificado raíz «%s» no existe\n" -"Debe ya sea entregar este archivo, o bien cambiar sslmode para deshabilitar " -"la verificación de certificados del servidor.\n" - -#: fe-secure-openssl.c:1419 +#: fe-secure-openssl.c:1366 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "el certificado no pudo ser obtenido: %s\n" -#: fe-secure-openssl.c:1511 +#: fe-secure-openssl.c:1458 #, c-format msgid "no SSL error reported" msgstr "código de error SSL no reportado" -#: fe-secure-openssl.c:1520 +#: fe-secure-openssl.c:1467 #, c-format msgid "SSL error code %lu" msgstr "código de error SSL %lu" @@ -1081,6 +991,3 @@ msgstr "no se pudo enviar datos al servidor: %s\n" #, c-format msgid "unrecognized socket error: 0x%08X/%d" msgstr "código de error de socket no reconocido: 0x%08X/%d" - -#~ msgid "socket not open\n" -#~ msgstr "el socket no está abierto\n" diff --git a/src/interfaces/libpq/po/fr.po b/src/interfaces/libpq/po/fr.po index f591eb66a3..79b9736e69 100644 --- a/src/interfaces/libpq/po/fr.po +++ b/src/interfaces/libpq/po/fr.po @@ -9,21 +9,21 @@ 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:08+0000\n" -"PO-Revision-Date: 2016-05-09 10:18+0200\n" +"POT-Creation-Date: 2017-06-30 16:18+0000\n" +"PO-Revision-Date: 2017-07-02 17:39+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: PostgreSQLfr \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.1\n" +"X-Generator: Poedit 1.8.12\n" #: fe-auth.c:148 msgid "GSSAPI continuation error" msgstr "erreur de suite GSSAPI" -#: fe-auth.c:177 fe-auth.c:412 +#: fe-auth.c:177 fe-auth.c:417 msgid "host name must be specified\n" msgstr "le nom d'hôte doit être précisé\n" @@ -31,14 +31,15 @@ msgstr "le nom d'hôte doit être précisé\n" msgid "duplicate GSS authentication request\n" msgstr "requête d'authentification GSS dupliquée\n" -#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:383 fe-auth.c:418 fe-auth.c:514 -#: fe-auth.c:780 fe-connect.c:707 fe-connect.c:904 fe-connect.c:1080 -#: fe-connect.c:2091 fe-connect.c:3484 fe-connect.c:3736 fe-connect.c:3855 -#: fe-connect.c:4095 fe-connect.c:4175 fe-connect.c:4274 fe-connect.c:4526 -#: fe-connect.c:4555 fe-connect.c:4627 fe-connect.c:4645 fe-connect.c:4741 -#: fe-connect.c:5075 fe-connect.c:5225 fe-exec.c:2634 fe-exec.c:3381 -#: fe-exec.c:3546 fe-lobj.c:896 fe-protocol2.c:1206 fe-protocol3.c:992 -#: fe-protocol3.c:1678 fe-secure-openssl.c:551 fe-secure-openssl.c:1093 +#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:388 fe-auth.c:423 fe-auth.c:519 +#: fe-auth.c:798 fe-connect.c:767 fe-connect.c:964 fe-connect.c:1140 +#: fe-connect.c:2141 fe-connect.c:3499 fe-connect.c:3751 fe-connect.c:3870 +#: fe-connect.c:4110 fe-connect.c:4190 fe-connect.c:4289 fe-connect.c:4545 +#: fe-connect.c:4574 fe-connect.c:4646 fe-connect.c:4670 fe-connect.c:4688 +#: fe-connect.c:4784 fe-connect.c:5118 fe-connect.c:5268 fe-exec.c:2651 +#: fe-exec.c:3398 fe-exec.c:3563 fe-lobj.c:896 fe-protocol2.c:1206 +#: fe-protocol3.c:992 fe-protocol3.c:1678 fe-secure-openssl.c:515 +#: fe-secure-openssl.c:1139 msgid "out of memory\n" msgstr "mémoire épuisée\n" @@ -50,70 +51,78 @@ msgstr "erreur d'import du nom GSSAPI" msgid "SSPI continuation error" msgstr "erreur de suite SSPI" -#: fe-auth.c:398 +#: fe-auth.c:378 +msgid "duplicate SSPI authentication request\n" +msgstr "requête d'authentification SSPI dupliquée\n" + +#: fe-auth.c:403 msgid "could not acquire SSPI credentials" msgstr "n'a pas pu récupérer les pièces d'identité SSPI" -#: fe-auth.c:489 +#: fe-auth.c:494 msgid "SCM_CRED authentication method not supported\n" msgstr "authentification SCM_CRED non supportée\n" -#: fe-auth.c:565 +#: fe-auth.c:570 msgid "Kerberos 4 authentication not supported\n" msgstr "authentification Kerberos 4 non supportée\n" -#: fe-auth.c:570 +#: fe-auth.c:575 msgid "Kerberos 5 authentication not supported\n" msgstr "authentification Kerberos 5 non supportée\n" -#: fe-auth.c:641 +#: fe-auth.c:646 msgid "GSSAPI authentication not supported\n" msgstr "authentification GSSAPI non supportée\n" -#: fe-auth.c:673 +#: fe-auth.c:678 msgid "SSPI authentication not supported\n" msgstr "authentification SSPI non supportée\n" -#: fe-auth.c:681 +#: fe-auth.c:686 msgid "Crypt authentication not supported\n" msgstr "authentification crypt non supportée\n" -#: fe-auth.c:708 +#: fe-auth.c:721 +msgid "SCRAM authentication requires libpq version 10 or above\n" +msgstr "L'authentification SCRAM nécessite la bibliothèque libpq en version 10 ou ultérieure.\n" + +#: fe-auth.c:726 #, c-format msgid "authentication method %u not supported\n" msgstr "méthode d'authentification %u non supportée\n" -#: fe-auth.c:755 +#: fe-auth.c:773 #, c-format msgid "user name lookup failure: error code %lu\n" msgstr "échec de la recherche du nom d'utilisateur : code erreur %lu\n" -#: fe-auth.c:765 fe-connect.c:2018 +#: fe-auth.c:783 fe-connect.c:2068 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "n'a pas pu rechercher l'identifiant de l'utilisateur local %d : %s\n" -#: fe-auth.c:770 fe-connect.c:2023 +#: fe-auth.c:788 fe-connect.c:2073 #, c-format msgid "local user with ID %d does not exist\n" msgstr "l'utilisateur local dont l'identifiant est %d n'existe pas\n" -#: fe-connect.c:846 +#: fe-connect.c:906 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "valeur sslmode invalide : « %s »\n" -#: fe-connect.c:867 +#: fe-connect.c:927 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "valeur sslmode « %s » invalide si le support SSL n'est pas compilé initialement\n" -#: fe-connect.c:1104 +#: fe-connect.c:1164 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "n'a pas pu activer le mode TCP sans délai pour la socket : %s\n" -#: fe-connect.c:1134 +#: fe-connect.c:1194 #, c-format msgid "" "could not connect to server: %s\n" @@ -124,7 +133,7 @@ msgstr "" "\tLe serveur est-il actif localement et accepte-t-il les connexions sur la\n" " \tsocket Unix « %s » ?\n" -#: fe-connect.c:1189 +#: fe-connect.c:1249 #, c-format msgid "" "could not connect to server: %s\n" @@ -135,7 +144,7 @@ msgstr "" "\tLe serveur est-il actif sur l'hôte « %s » (%s)\n" "\tet accepte-t-il les connexionsTCP/IP sur le port %s ?\n" -#: fe-connect.c:1198 +#: fe-connect.c:1258 #, c-format msgid "" "could not connect to server: %s\n" @@ -146,307 +155,287 @@ msgstr "" "\tLe serveur est-il actif sur l'hôte « %s » et accepte-t-il les connexions\n" "\tTCP/IP sur le port %s ?\n" -#: fe-connect.c:1249 -#, c-format -msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" -msgstr "setsockopt(TCP_KEEPIDLE) a échoué : %s\n" - -#: fe-connect.c:1262 +#: fe-connect.c:1309 fe-connect.c:1341 fe-connect.c:1374 fe-connect.c:1841 #, c-format -msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" -msgstr "setsockopt(TCP_KEEPALIVE) a échoué : %s\n" +msgid "setsockopt(%s) failed: %s\n" +msgstr "setsockopt(%s) a échoué : %s\n" -#: fe-connect.c:1294 -#, c-format -msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" -msgstr "setsockopt(TCP_KEEPINTVL) a échoué : %s\n" - -#: fe-connect.c:1326 -#, c-format -msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" -msgstr "setsockopt(TCP_KEEPCNT) a échoué : %s\n" - -#: fe-connect.c:1374 +#: fe-connect.c:1423 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) a échoué : %ui\n" -#: fe-connect.c:1426 +#: fe-connect.c:1475 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "numéro de port invalide : « %s »\n" -#: fe-connect.c:1459 +#: fe-connect.c:1508 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "Le chemin du socket de domaine Unix, « %s », est trop (maximum %d octets)\n" -#: fe-connect.c:1478 +#: fe-connect.c:1527 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "n'a pas pu traduire le nom d'hôte « %s » en adresse : %s\n" -#: fe-connect.c:1482 +#: fe-connect.c:1531 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "" "n'a pas pu traduire le chemin de la socket du domaine Unix « %s » en adresse :\n" "%s\n" -#: fe-connect.c:1687 +#: fe-connect.c:1736 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "état de connexion invalide, indique probablement une corruption de mémoire\n" -#: fe-connect.c:1727 +#: fe-connect.c:1776 #, c-format msgid "could not create socket: %s\n" msgstr "n'a pas pu créer la socket : %s\n" -#: fe-connect.c:1749 +#: fe-connect.c:1798 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "n'a pas pu activer le mode non-bloquant pour la socket : %s\n" -#: fe-connect.c:1760 +#: fe-connect.c:1809 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "n'a pas pu paramétrer la socket en mode close-on-exec : %s\n" -#: fe-connect.c:1779 +#: fe-connect.c:1828 msgid "keepalives parameter must be an integer\n" msgstr "le paramètre keepalives doit être un entier\n" -#: fe-connect.c:1792 -#, c-format -msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" -msgstr "setsockopt(SO_KEEPALIVE) a échoué : %s\n" - -#: fe-connect.c:1929 +#: fe-connect.c:1979 #, c-format msgid "could not get socket error status: %s\n" msgstr "n'a pas pu déterminer le statut d'erreur de la socket : %s\n" -#: fe-connect.c:1963 +#: fe-connect.c:2013 #, c-format msgid "could not get client address from socket: %s\n" msgstr "n'a pas pu obtenir l'adresse du client depuis la socket : %s\n" -#: fe-connect.c:2005 +#: fe-connect.c:2055 msgid "requirepeer parameter is not supported on this platform\n" msgstr "le paramètre requirepeer n'est pas supporté sur cette plateforme\n" -#: fe-connect.c:2008 +#: fe-connect.c:2058 #, c-format msgid "could not get peer credentials: %s\n" msgstr "n'a pas pu obtenir l'authentification de l'autre : %s\n" -#: fe-connect.c:2031 +#: fe-connect.c:2081 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "requirepeer indique « %s » mais le nom de l'utilisateur réel est « %s »\n" -#: fe-connect.c:2065 +#: fe-connect.c:2115 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "n'a pas pu transmettre le paquet de négociation SSL : %s\n" -#: fe-connect.c:2104 +#: fe-connect.c:2154 #, c-format msgid "could not send startup packet: %s\n" msgstr "n'a pas pu transmettre le paquet de démarrage : %s\n" -#: fe-connect.c:2174 +#: fe-connect.c:2224 msgid "server does not support SSL, but SSL was required\n" msgstr "le serveur ne supporte pas SSL alors que SSL était réclamé\n" -#: fe-connect.c:2200 +#: fe-connect.c:2250 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "a reçu une réponse invalide à la négociation SSL : %c\n" -#: fe-connect.c:2275 fe-connect.c:2308 +#: fe-connect.c:2325 fe-connect.c:2358 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "" "attendait une requête d'authentification en provenance du serveur, mais a\n" " reçu %c\n" -#: fe-connect.c:2475 +#: fe-connect.c:2525 #, c-format msgid "out of memory allocating GSSAPI buffer (%d)" msgstr "mémoire épuisée lors de l'allocation du tampon GSSAPI (%d)" -#: fe-connect.c:2560 +#: fe-connect.c:2610 msgid "unexpected message from server during startup\n" msgstr "message inattendu du serveur lors du démarrage\n" -#: fe-connect.c:2654 +#: fe-connect.c:2704 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "" "état de connexion invalide (%d), indiquant probablement une corruption de\n" " mémoire\n" -#: fe-connect.c:3090 fe-connect.c:3150 +#: fe-connect.c:3105 fe-connect.c:3165 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "échec de PGEventProc « %s » lors de l'événement PGEVT_CONNRESET\n" -#: fe-connect.c:3497 +#: fe-connect.c:3512 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "URL LDAP « %s » invalide : le schéma doit être ldap://\n" -#: fe-connect.c:3512 +#: fe-connect.c:3527 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "URL LDAP « %s » invalide : le « distinguished name » manque\n" -#: fe-connect.c:3523 fe-connect.c:3576 +#: fe-connect.c:3538 fe-connect.c:3591 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "URL LDAP « %s » invalide : doit avoir exactement un attribut\n" -#: fe-connect.c:3533 fe-connect.c:3590 +#: fe-connect.c:3548 fe-connect.c:3605 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "URL LDAP « %s » invalide : doit avoir une échelle de recherche (base/un/sous)\n" -#: fe-connect.c:3544 +#: fe-connect.c:3559 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "URL LDAP « %s » invalide : aucun filtre\n" -#: fe-connect.c:3565 +#: fe-connect.c:3580 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "URL LDAP « %s » invalide : numéro de port invalide\n" -#: fe-connect.c:3599 +#: fe-connect.c:3614 msgid "could not create LDAP structure\n" msgstr "n'a pas pu créer la structure LDAP\n" -#: fe-connect.c:3675 +#: fe-connect.c:3690 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "échec de la recherche sur le serveur LDAP : %s\n" -#: fe-connect.c:3686 +#: fe-connect.c:3701 msgid "more than one entry found on LDAP lookup\n" msgstr "plusieurs entrées trouvées pendant la recherche LDAP\n" -#: fe-connect.c:3687 fe-connect.c:3699 +#: fe-connect.c:3702 fe-connect.c:3714 msgid "no entry found on LDAP lookup\n" msgstr "aucune entrée trouvée pendant la recherche LDAP\n" -#: fe-connect.c:3710 fe-connect.c:3723 +#: fe-connect.c:3725 fe-connect.c:3738 msgid "attribute has no values on LDAP lookup\n" msgstr "l'attribut n'a pas de valeur après la recherche LDAP\n" -#: fe-connect.c:3775 fe-connect.c:3794 fe-connect.c:4313 +#: fe-connect.c:3790 fe-connect.c:3809 fe-connect.c:4328 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "« = » manquant après « %s » dans la chaîne des paramètres de connexion\n" -#: fe-connect.c:3867 fe-connect.c:4494 fe-connect.c:5208 +#: fe-connect.c:3882 fe-connect.c:4513 fe-connect.c:5251 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "option de connexion « %s » invalide\n" -#: fe-connect.c:3883 fe-connect.c:4362 +#: fe-connect.c:3898 fe-connect.c:4377 msgid "unterminated quoted string in connection info string\n" msgstr "guillemets non refermés dans la chaîne des paramètres de connexion\n" -#: fe-connect.c:3923 +#: fe-connect.c:3938 msgid "could not get home directory to locate service definition file" msgstr "" "n'a pas pu obtenir le répertoire personnel pour trouver le certificat de\n" "définition du service" -#: fe-connect.c:3956 +#: fe-connect.c:3971 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "définition du service « %s » introuvable\n" -#: fe-connect.c:3979 +#: fe-connect.c:3994 #, c-format msgid "service file \"%s\" not found\n" msgstr "fichier de service « %s » introuvable\n" -#: fe-connect.c:3992 +#: fe-connect.c:4007 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "ligne %d trop longue dans le fichier service « %s »\n" -#: fe-connect.c:4063 fe-connect.c:4107 +#: fe-connect.c:4078 fe-connect.c:4122 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "erreur de syntaxe dans le fichier service « %s », ligne %d\n" -#: fe-connect.c:4074 +#: fe-connect.c:4089 #, c-format msgid "nested service specifications not supported in service file \"%s\", line %d\n" msgstr "spécifications imbriquées de service non supportées dans le fichier service « %s », ligne %d\n" -#: fe-connect.c:4752 +#: fe-connect.c:4795 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "URI invalide propagée à la routine d'analyse interne : « %s »\n" -#: fe-connect.c:4822 +#: fe-connect.c:4865 #, c-format msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" msgstr "" "fin de chaîne atteinte lors de la recherche du « ] » correspondant dans\n" "l'adresse IPv6 de l'hôte indiquée dans l'URI : « %s »\n" -#: fe-connect.c:4829 +#: fe-connect.c:4872 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "l'adresse IPv6 de l'hôte ne peut pas être vide dans l'URI : « %s »\n" -#: fe-connect.c:4844 +#: fe-connect.c:4887 #, c-format msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" msgstr "" "caractère « %c » inattendu à la position %d de l'URI (caractère « : » ou\n" "« / » attendu) : « %s »\n" -#: fe-connect.c:4958 +#: fe-connect.c:5001 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "séparateur « = » de clé/valeur en trop dans le paramètre de requête URI : « %s »\n" -#: fe-connect.c:4978 +#: fe-connect.c:5021 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "séparateur « = » de clé/valeur manquant dans le paramètre de requête URI : « %s »\n" -#: fe-connect.c:5029 +#: fe-connect.c:5072 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "paramètre de la requête URI invalide : « %s »\n" -#: fe-connect.c:5103 +#: fe-connect.c:5146 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "jeton encodé en pourcentage invalide : « %s »\n" -#: fe-connect.c:5113 +#: fe-connect.c:5156 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "valeur %%00 interdite dans la valeur codée en pourcentage : « %s »\n" -#: fe-connect.c:5447 +#: fe-connect.c:5490 msgid "connection pointer is NULL\n" msgstr "le pointeur de connexion est NULL\n" -#: fe-connect.c:5745 +#: fe-connect.c:5788 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "ATTENTION : le fichier de mots de passe « %s » n'est pas un fichier texte\n" -#: fe-connect.c:5754 +#: fe-connect.c:5797 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "" @@ -454,7 +443,7 @@ msgstr "" "lecture pour le groupe ou universel ; les droits devraient être u=rw (0600)\n" "ou inférieur\n" -#: fe-connect.c:5860 +#: fe-connect.c:5911 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "mot de passe récupéré dans le fichier fichier « %s »\n" @@ -463,98 +452,98 @@ msgstr "mot de passe récupéré dans le fichier fichier « %s »\n" msgid "NOTICE" msgstr "NOTICE" -#: fe-exec.c:1123 fe-exec.c:1181 fe-exec.c:1227 +#: fe-exec.c:1141 fe-exec.c:1199 fe-exec.c:1245 msgid "command string is a null pointer\n" msgstr "la chaîne de commande est un pointeur nul\n" -#: fe-exec.c:1187 fe-exec.c:1233 fe-exec.c:1328 +#: fe-exec.c:1205 fe-exec.c:1251 fe-exec.c:1346 msgid "number of parameters must be between 0 and 65535\n" msgstr "le nombre de paramètres doit être compris entre 0 et 65535\n" -#: fe-exec.c:1221 fe-exec.c:1322 +#: fe-exec.c:1239 fe-exec.c:1340 msgid "statement name is a null pointer\n" msgstr "le nom de l'instruction est un pointeur nul\n" -#: fe-exec.c:1241 fe-exec.c:1405 fe-exec.c:2123 fe-exec.c:2322 +#: fe-exec.c:1259 fe-exec.c:1422 fe-exec.c:2140 fe-exec.c:2339 msgid "function requires at least protocol version 3.0\n" msgstr "la fonction nécessite au minimum le protocole 3.0\n" -#: fe-exec.c:1359 +#: fe-exec.c:1377 msgid "no connection to the server\n" msgstr "aucune connexion au serveur\n" -#: fe-exec.c:1366 +#: fe-exec.c:1384 msgid "another command is already in progress\n" msgstr "une autre commande est déjà en cours\n" -#: fe-exec.c:1481 +#: fe-exec.c:1498 msgid "length must be given for binary parameter\n" msgstr "la longueur doit être indiquée pour les paramètres binaires\n" -#: fe-exec.c:1753 +#: fe-exec.c:1770 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "asyncStatus inattendu : %d\n" -#: fe-exec.c:1773 +#: fe-exec.c:1790 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "échec de PGEventProc « %s » lors de l'événement PGEVT_RESULTCREATE\n" -#: fe-exec.c:1933 +#: fe-exec.c:1950 msgid "COPY terminated by new PQexec" msgstr "COPY terminé par un nouveau PQexec" -#: fe-exec.c:1941 +#: fe-exec.c:1958 msgid "COPY IN state must be terminated first\n" msgstr "l'état COPY IN doit d'abord être terminé\n" -#: fe-exec.c:1961 +#: fe-exec.c:1978 msgid "COPY OUT state must be terminated first\n" msgstr "l'état COPY OUT doit d'abord être terminé\n" -#: fe-exec.c:1969 +#: fe-exec.c:1986 msgid "PQexec not allowed during COPY BOTH\n" msgstr "PQexec non autorisé pendant COPY BOTH\n" -#: fe-exec.c:2212 fe-exec.c:2279 fe-exec.c:2369 fe-protocol2.c:1352 +#: fe-exec.c:2229 fe-exec.c:2296 fe-exec.c:2386 fe-protocol2.c:1352 #: fe-protocol3.c:1817 msgid "no COPY in progress\n" msgstr "aucun COPY en cours\n" -#: fe-exec.c:2559 +#: fe-exec.c:2576 msgid "connection in wrong state\n" msgstr "connexion dans un état erroné\n" -#: fe-exec.c:2590 +#: fe-exec.c:2607 msgid "invalid ExecStatusType code" msgstr "code ExecStatusType invalide" -#: fe-exec.c:2617 +#: fe-exec.c:2634 msgid "PGresult is not an error result\n" msgstr "PGresult n'est pas un résultat d'erreur\n" -#: fe-exec.c:2692 fe-exec.c:2715 +#: fe-exec.c:2709 fe-exec.c:2732 #, c-format msgid "column number %d is out of range 0..%d" msgstr "le numéro de colonne %d est en dehors des limites 0..%d" -#: fe-exec.c:2708 +#: fe-exec.c:2725 #, c-format msgid "row number %d is out of range 0..%d" msgstr "le numéro de ligne %d est en dehors des limites 0..%d" -#: fe-exec.c:2730 +#: fe-exec.c:2747 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "le numéro de paramètre %d est en dehors des limites 0..%d" -#: fe-exec.c:3040 +#: fe-exec.c:3057 #, c-format msgid "could not interpret result from server: %s" msgstr "n'a pas pu interpréter la réponse du serveur : %s" -#: fe-exec.c:3279 fe-exec.c:3363 +#: fe-exec.c:3296 fe-exec.c:3380 msgid "incomplete multibyte character\n" msgstr "caractère multi-octet incomplet\n" @@ -657,7 +646,7 @@ msgstr "entier de taille %lu non supporté par pqPutInt" msgid "connection not open\n" msgstr "la connexion n'est pas active\n" -#: fe-misc.c:812 fe-secure-openssl.c:270 fe-secure-openssl.c:379 +#: fe-misc.c:812 fe-secure-openssl.c:231 fe-secure-openssl.c:340 #: fe-secure.c:253 fe-secure.c:362 msgid "" "server closed the connection unexpectedly\n" @@ -869,101 +858,125 @@ msgstr "LIGNE %d : " msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline : ne va pas réaliser un COPY OUT au format texte\n" -#: fe-secure-openssl.c:146 fe-secure-openssl.c:1030 fe-secure-openssl.c:1250 -#, c-format -msgid "could not acquire mutex: %s\n" -msgstr "n'a pas pu acquérir le mutex : %s\n" - -#: fe-secure-openssl.c:158 -#, c-format -msgid "could not establish SSL connection: %s\n" -msgstr "n'a pas pu établir la connexion SSL : %s\n" - -#: fe-secure-openssl.c:275 fe-secure-openssl.c:384 fe-secure-openssl.c:1376 +#: fe-secure-openssl.c:236 fe-secure-openssl.c:345 fe-secure-openssl.c:1323 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "erreur SYSCALL SSL : %s\n" -#: fe-secure-openssl.c:282 fe-secure-openssl.c:391 fe-secure-openssl.c:1380 +#: fe-secure-openssl.c:243 fe-secure-openssl.c:352 fe-secure-openssl.c:1327 msgid "SSL SYSCALL error: EOF detected\n" msgstr "erreur SYSCALL SSL : EOF détecté\n" -#: fe-secure-openssl.c:293 fe-secure-openssl.c:402 fe-secure-openssl.c:1389 +#: fe-secure-openssl.c:254 fe-secure-openssl.c:363 fe-secure-openssl.c:1336 #, c-format msgid "SSL error: %s\n" msgstr "erreur SSL : %s\n" -#: fe-secure-openssl.c:308 fe-secure-openssl.c:417 +#: fe-secure-openssl.c:269 fe-secure-openssl.c:378 msgid "SSL connection has been closed unexpectedly\n" msgstr "la connexion SSL a été fermée de façon inattendu\n" -#: fe-secure-openssl.c:314 fe-secure-openssl.c:423 fe-secure-openssl.c:1398 +#: fe-secure-openssl.c:275 fe-secure-openssl.c:384 fe-secure-openssl.c:1345 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "code d'erreur SSL inconnu : %d\n" -#: fe-secure-openssl.c:535 +#: fe-secure-openssl.c:495 msgid "SSL certificate's name entry is missing\n" msgstr "l'entrée du nom du certificat SSL est manquante\n" -#: fe-secure-openssl.c:565 +#: fe-secure-openssl.c:529 msgid "SSL certificate's name contains embedded null\n" msgstr "le nom du certificat SSL contient des NULL\n" -#: fe-secure-openssl.c:616 +#: fe-secure-openssl.c:580 msgid "host name must be specified for a verified SSL connection\n" msgstr "le nom d'hôte doit être précisé pour une connexion SSL vérifiée\n" -#: fe-secure-openssl.c:716 +#: fe-secure-openssl.c:680 #, c-format msgid "server certificate for \"%s\" does not match host name \"%s\"\n" msgstr "le certificat serveur pour « %s » ne correspond pas au nom d'hôte « %s »\n" -#: fe-secure-openssl.c:722 +#: fe-secure-openssl.c:686 msgid "could not get server's host name from server certificate\n" msgstr "n'a pas pu récupérer le nom d'hôte du serveur à partir du certificat serveur\n" -#: fe-secure-openssl.c:869 +#: fe-secure-openssl.c:930 #, c-format msgid "could not create SSL context: %s\n" msgstr "n'a pas pu créer le contexte SSL : %s\n" -#: fe-secure-openssl.c:1000 +#: fe-secure-openssl.c:967 +#, c-format +msgid "could not read root certificate file \"%s\": %s\n" +msgstr "n'a pas pu lire le certificat racine « %s » : %s\n" + +#: fe-secure-openssl.c:995 +#, c-format +msgid "SSL library does not support CRL certificates (file \"%s\")\n" +msgstr "la bibliothèque SSL ne supporte pas les certificats CRL (fichier « %s »)\n" + +#: fe-secure-openssl.c:1023 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"n'a pas pu obtenir le répertoire personnel pour situer le fichier de certificat racine.\n" +"Fournissez le fichier ou modifiez sslmode pour désactiver la vérification du\n" +"certificat par le serveur.\n" + +#: fe-secure-openssl.c:1027 +#, c-format +msgid "" +"root certificate file \"%s\" does not exist\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"le fichier de certificat racine « %s » n'existe pas.\n" +"Fournissez le fichier ou modifiez sslmode pour désactiver la vérification du\n" +"certificat par le serveur.\n" + +#: fe-secure-openssl.c:1058 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "n'a pas pu ouvrir le certificat « %s » : %s\n" -#: fe-secure-openssl.c:1039 fe-secure-openssl.c:1054 +#: fe-secure-openssl.c:1077 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "n'a pas pu lire le certificat « %s » : %s\n" -#: fe-secure-openssl.c:1109 +#: fe-secure-openssl.c:1101 +#, c-format +msgid "could not establish SSL connection: %s\n" +msgstr "n'a pas pu établir la connexion SSL : %s\n" + +#: fe-secure-openssl.c:1155 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "n'a pas pu charger le moteur SSL « %s » : %s\n" -#: fe-secure-openssl.c:1121 +#: fe-secure-openssl.c:1167 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "n'a pas pu initialiser le moteur SSL « %s » : %s\n" -#: fe-secure-openssl.c:1137 +#: fe-secure-openssl.c:1183 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "n'a pas pu lire la clé privée SSL « %s » à partir du moteur « %s » : %s\n" -#: fe-secure-openssl.c:1151 +#: fe-secure-openssl.c:1197 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "n'a pas pu charger la clé privée SSL « %s » à partir du moteur « %s » : %s\n" -#: fe-secure-openssl.c:1188 +#: fe-secure-openssl.c:1234 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "le certificat est présent, mais la clé privée « %s » est absente\n" -#: fe-secure-openssl.c:1196 +#: fe-secure-openssl.c:1242 #, c-format msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "" @@ -971,56 +984,27 @@ msgstr "" "pour le groupe ou universel ; les droits devraient être u=rw (0600)\n" "ou inférieur\n" -#: fe-secure-openssl.c:1207 +#: fe-secure-openssl.c:1253 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "n'a pas pu charger le fichier de clé privée « %s » : %s\n" -#: fe-secure-openssl.c:1221 +#: fe-secure-openssl.c:1267 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "le certificat ne correspond pas à la clé privée « %s » : %s\n" -#: fe-secure-openssl.c:1259 -#, c-format -msgid "could not read root certificate file \"%s\": %s\n" -msgstr "n'a pas pu lire le certificat racine « %s » : %s\n" - -#: fe-secure-openssl.c:1289 -#, c-format -msgid "SSL library does not support CRL certificates (file \"%s\")\n" -msgstr "la bibliothèque SSL ne supporte pas les certificats CRL (fichier « %s »)\n" - -#: fe-secure-openssl.c:1322 -msgid "" -"could not get home directory to locate root certificate file\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" -msgstr "" -"n'a pas pu obtenir le répertoire personnel pour situer le fichier de certificat racine.\n" -"Fournissez le fichier ou modifiez sslmode pour désactiver la vérification du\n" -"certificat par le serveur.\n" - -#: fe-secure-openssl.c:1326 -#, c-format -msgid "" -"root certificate file \"%s\" does not exist\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" -msgstr "" -"le fichier de certificat racine « %s » n'existe pas.\n" -"Fournissez le fichier ou modifiez sslmode pour désactiver la vérification du\n" -"certificat par le serveur.\n" - -#: fe-secure-openssl.c:1419 +#: fe-secure-openssl.c:1366 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "le certificat n'a pas pu être obtenu : %s\n" -#: fe-secure-openssl.c:1511 +#: fe-secure-openssl.c:1458 #, c-format msgid "no SSL error reported" msgstr "aucune erreur SSL reportée" -#: fe-secure-openssl.c:1520 +#: fe-secure-openssl.c:1467 #, c-format msgid "SSL error code %lu" msgstr "erreur SSL %lu" @@ -1040,42 +1024,57 @@ msgstr "n'a pas pu transmettre les données au serveur : %s\n" msgid "unrecognized socket error: 0x%08X/%d" msgstr "erreur de socket non reconnue : 0x%08X/%d" -#~ msgid "unrecognized return value from row processor" -#~ msgstr "valeur de retour du traitement de la ligne non reconnue" - -#~ msgid "invalid sslverify value: \"%s\"\n" -#~ msgstr "valeur sslverify invalide : « %s »\n" +#~ msgid "socket not open\n" +#~ msgstr "socket non ouvert\n" -#~ msgid "invalid appname state %d, probably indicative of memory corruption\n" -#~ msgstr "état appname %d invalide, indiquant probablement une corruption de la mémoire\n" +#~ msgid "could not set socket to blocking mode: %s\n" +#~ msgstr "n'a pas pu activer le mode bloquant pour la socket : %s\n" -#~ msgid "could not read private key file \"%s\": %s\n" -#~ msgstr "n'a pas pu lire la clé privée « %s » : %s\n" +#~ msgid "Kerberos 5 authentication rejected: %*s\n" +#~ msgstr "authentification Kerberos 5 rejetée : %*s\n" -#~ msgid "private key file \"%s\" changed during execution\n" -#~ msgstr "la clé privée « %s » a été modifiée durant l'exécution\n" +#~ msgid "could not restore nonblocking mode on socket: %s\n" +#~ msgstr "n'a pas pu rétablir le mode non-bloquant pour la socket : %s\n" -#~ msgid "could not open private key file \"%s\": %s\n" -#~ msgstr "n'a pas pu ouvrir le fichier de clé privée « %s » : %s\n" +#~ msgid "could not get home directory to locate client certificate files\n" +#~ msgstr "" +#~ "n'a pas pu récupérer le répertoire personnel pour trouver les certificats\n" +#~ "du client\n" #~ msgid "verified SSL connections are only supported when connecting to a host name\n" #~ msgstr "" #~ "les connexions SSL vérifiées ne sont supportées que lors de la connexion\n" #~ "à un alias hôte\n" -#~ msgid "could not get home directory to locate client certificate files\n" -#~ msgstr "" -#~ "n'a pas pu récupérer le répertoire personnel pour trouver les certificats\n" -#~ "du client\n" +#~ msgid "could not open private key file \"%s\": %s\n" +#~ msgstr "n'a pas pu ouvrir le fichier de clé privée « %s » : %s\n" -#~ msgid "could not restore nonblocking mode on socket: %s\n" -#~ msgstr "n'a pas pu rétablir le mode non-bloquant pour la socket : %s\n" +#~ msgid "private key file \"%s\" changed during execution\n" +#~ msgstr "la clé privée « %s » a été modifiée durant l'exécution\n" -#~ msgid "Kerberos 5 authentication rejected: %*s\n" -#~ msgstr "authentification Kerberos 5 rejetée : %*s\n" +#~ msgid "could not read private key file \"%s\": %s\n" +#~ msgstr "n'a pas pu lire la clé privée « %s » : %s\n" -#~ msgid "could not set socket to blocking mode: %s\n" -#~ msgstr "n'a pas pu activer le mode bloquant pour la socket : %s\n" +#~ msgid "invalid appname state %d, probably indicative of memory corruption\n" +#~ msgstr "état appname %d invalide, indiquant probablement une corruption de la mémoire\n" -#~ msgid "socket not open\n" -#~ msgstr "socket non ouvert\n" +#~ msgid "invalid sslverify value: \"%s\"\n" +#~ msgstr "valeur sslverify invalide : « %s »\n" + +#~ msgid "unrecognized return value from row processor" +#~ msgstr "valeur de retour du traitement de la ligne non reconnue" + +#~ msgid "could not acquire mutex: %s\n" +#~ msgstr "n'a pas pu acquérir le mutex : %s\n" + +#~ msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" +#~ msgstr "setsockopt(SO_KEEPALIVE) a échoué : %s\n" + +#~ msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" +#~ msgstr "setsockopt(TCP_KEEPINTVL) a échoué : %s\n" + +#~ msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" +#~ msgstr "setsockopt(TCP_KEEPALIVE) a échoué : %s\n" + +#~ msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" +#~ msgstr "setsockopt(TCP_KEEPIDLE) a échoué : %s\n" diff --git a/src/interfaces/libpq/po/it.po b/src/interfaces/libpq/po/it.po index cc3217dbec..22b8025c24 100644 --- a/src/interfaces/libpq/po/it.po +++ b/src/interfaces/libpq/po/it.po @@ -40,8 +40,8 @@ msgid "" msgstr "" "Project-Id-Version: libpq (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:43+0100\n" +"POT-Creation-Date: 2017-05-22 15:38+0000\n" +"PO-Revision-Date: 2017-05-23 01:18+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -50,7 +50,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" # DV: non ne sono convinto #: fe-auth.c:148 @@ -66,13 +66,14 @@ msgid "duplicate GSS authentication request\n" msgstr "richiesta di autenticazione GSS duplicata\n" #: fe-auth.c:197 fe-auth.c:309 fe-auth.c:383 fe-auth.c:418 fe-auth.c:514 -#: fe-auth.c:780 fe-connect.c:707 fe-connect.c:904 fe-connect.c:1080 +#: fe-auth.c:793 fe-connect.c:707 fe-connect.c:904 fe-connect.c:1080 #: fe-connect.c:2091 fe-connect.c:3484 fe-connect.c:3736 fe-connect.c:3855 -#: fe-connect.c:4095 fe-connect.c:4175 fe-connect.c:4274 fe-connect.c:4526 -#: fe-connect.c:4555 fe-connect.c:4627 fe-connect.c:4645 fe-connect.c:4741 -#: fe-connect.c:5075 fe-connect.c:5225 fe-exec.c:2634 fe-exec.c:3381 -#: fe-exec.c:3546 fe-lobj.c:896 fe-protocol2.c:1206 fe-protocol3.c:992 -#: fe-protocol3.c:1678 fe-secure-openssl.c:551 fe-secure-openssl.c:1093 +#: fe-connect.c:4095 fe-connect.c:4175 fe-connect.c:4274 fe-connect.c:4530 +#: fe-connect.c:4559 fe-connect.c:4631 fe-connect.c:4655 fe-connect.c:4673 +#: fe-connect.c:4769 fe-connect.c:5103 fe-connect.c:5253 fe-exec.c:2651 +#: fe-exec.c:3398 fe-exec.c:3563 fe-lobj.c:896 fe-protocol2.c:1206 +#: fe-protocol3.c:992 fe-protocol3.c:1678 fe-secure-openssl.c:515 +#: fe-secure-openssl.c:1139 msgid "out of memory\n" msgstr "memoria esaurita\n" @@ -113,22 +114,26 @@ msgstr "l'autenticazione SSPI non è supportata\n" msgid "Crypt authentication not supported\n" msgstr "l'autenticazione Crypt non è supportata\n" -#: fe-auth.c:708 +#: fe-auth.c:716 +msgid "SCRAM authentication requires libpq version 10 or above\n" +msgstr "l'autenticazione SCRAM richiede libpq versione 10 o successiva\n" + +#: fe-auth.c:721 #, c-format msgid "authentication method %u not supported\n" msgstr "l'autenticazione %u non è supportata\n" -#: fe-auth.c:755 +#: fe-auth.c:768 #, c-format msgid "user name lookup failure: error code %lu\n" msgstr "ricerca del nome utente fallita: codice di errore %lu\n" -#: fe-auth.c:765 fe-connect.c:2018 +#: fe-auth.c:778 fe-connect.c:2018 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "ricerca dell'ID utente locale %d non riuscita: %s\n" -#: fe-auth.c:770 fe-connect.c:2023 +#: fe-auth.c:783 fe-connect.c:2023 #, c-format msgid "local user with ID %d does not exist\n" msgstr "l'utente locale con ID %d non esiste\n" @@ -377,7 +382,7 @@ msgstr "l'attributo non ha valori nella ricerca LDAP\n" msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "manca \"=\" dopo \"%s\" nella stringa di connessione\n" -#: fe-connect.c:3867 fe-connect.c:4494 fe-connect.c:5208 +#: fe-connect.c:3867 fe-connect.c:4498 fe-connect.c:5236 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "opzione di connessione errata \"%s\"\n" @@ -415,68 +420,68 @@ msgstr "errore di sintassi del file di servizio \"%s\", alla riga %d\n" msgid "nested service specifications not supported in service file \"%s\", line %d\n" msgstr "specifiche di servizio annidate non supportate nel file di servizio \"%s\", linea %d\n" -#: fe-connect.c:4752 +#: fe-connect.c:4780 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "URI invalida propagata alla routine di parsing interna: \"%s\"\n" -#: fe-connect.c:4822 +#: fe-connect.c:4850 #, c-format msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" msgstr "fine stringa raggiunta cercando un \"]\" corrispondente nell'indirizzo host IPv6 nella URI: \"%s\"\n" -#: fe-connect.c:4829 +#: fe-connect.c:4857 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "l'indirizzo host IPv6 non dev'essere assente nella URI: \"%s\"\n" -#: fe-connect.c:4844 +#: fe-connect.c:4872 #, c-format msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" msgstr "carattere inatteso \"%c\" in posizione %d nella uri URI (atteso \":\" oppure \"/\"): \"%s\"\n" -#: fe-connect.c:4958 +#: fe-connect.c:4986 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "separatore chiave/valore \"=\" in eccesso nei parametri della URI: \"%s\"\n" -#: fe-connect.c:4978 +#: fe-connect.c:5006 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "separatore chiave/valore \"=\" mancante nei parametri della URI: \"%s\"\n" -#: fe-connect.c:5029 +#: fe-connect.c:5057 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "parametro URI non valido: \"%s\"\n" -#: fe-connect.c:5103 +#: fe-connect.c:5131 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "simbolo percent-encoded non valido \"%s\"\n" -#: fe-connect.c:5113 +#: fe-connect.c:5141 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "valore non ammesso %%00 nel valore percent-encoded: \"%s\"\n" -#: fe-connect.c:5447 +#: fe-connect.c:5475 msgid "connection pointer is NULL\n" msgstr "il puntatore della connessione è NULL\n" -#: fe-connect.c:5745 +#: fe-connect.c:5773 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "ATTENZIONE: il file delle password \"%s\" non è un file regolare\n" -#: fe-connect.c:5754 +#: fe-connect.c:5782 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "" "ATTENZIONE: Il file delle password %s ha privilegi di accesso in lettura e scrittura per tutti;\n" "i permessi dovrebbero essere u=rw (0600) o inferiori\n" -#: fe-connect.c:5860 +#: fe-connect.c:5896 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "password ottenuta dal file \"%s\"\n" @@ -485,99 +490,99 @@ msgstr "password ottenuta dal file \"%s\"\n" msgid "NOTICE" msgstr "NOTIFICA" -#: fe-exec.c:1123 fe-exec.c:1181 fe-exec.c:1227 +#: fe-exec.c:1141 fe-exec.c:1199 fe-exec.c:1245 msgid "command string is a null pointer\n" msgstr "il testo del comando è un puntatore nullo\n" -#: fe-exec.c:1187 fe-exec.c:1233 fe-exec.c:1328 +#: fe-exec.c:1205 fe-exec.c:1251 fe-exec.c:1346 msgid "number of parameters must be between 0 and 65535\n" msgstr "il numero di parametri deve essere tra 0 e 65535\n" -#: fe-exec.c:1221 fe-exec.c:1322 +#: fe-exec.c:1239 fe-exec.c:1340 msgid "statement name is a null pointer\n" msgstr "il nome dell'istruzione è un puntatore nullo\n" -#: fe-exec.c:1241 fe-exec.c:1405 fe-exec.c:2123 fe-exec.c:2322 +#: fe-exec.c:1259 fe-exec.c:1422 fe-exec.c:2140 fe-exec.c:2339 msgid "function requires at least protocol version 3.0\n" msgstr "la funzione richiede almeno il protocollo versione 3.0\n" -#: fe-exec.c:1359 +#: fe-exec.c:1377 msgid "no connection to the server\n" msgstr "nessuna connessione al server\n" -#: fe-exec.c:1366 +#: fe-exec.c:1384 msgid "another command is already in progress\n" msgstr "un altro comando è in esecuzione\n" -#: fe-exec.c:1481 +#: fe-exec.c:1498 msgid "length must be given for binary parameter\n" msgstr "la lunghezza deve essere fornita per i parametri binari\n" -#: fe-exec.c:1753 +#: fe-exec.c:1770 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "asyncStatus imprevisto: %d\n" -#: fe-exec.c:1773 +#: fe-exec.c:1790 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc \"%s\" fallito durante l'evento PGEVT_RESULTCREATE\n" -#: fe-exec.c:1933 +#: fe-exec.c:1950 msgid "COPY terminated by new PQexec" msgstr "COPY terminato da una nuova PQexec" -#: fe-exec.c:1941 +#: fe-exec.c:1958 msgid "COPY IN state must be terminated first\n" msgstr "lo stato COPY IN deve prima essere terminato\n" -#: fe-exec.c:1961 +#: fe-exec.c:1978 msgid "COPY OUT state must be terminated first\n" msgstr "lo stato COPY OUT deve prima essere terminato\n" # NON SONO ASSOLUTAMENTE CONVINTO! -#: fe-exec.c:1969 +#: fe-exec.c:1986 msgid "PQexec not allowed during COPY BOTH\n" msgstr "PQexec not consentito durante COPY BOTH\n" -#: fe-exec.c:2212 fe-exec.c:2279 fe-exec.c:2369 fe-protocol2.c:1352 +#: fe-exec.c:2229 fe-exec.c:2296 fe-exec.c:2386 fe-protocol2.c:1352 #: fe-protocol3.c:1817 msgid "no COPY in progress\n" msgstr "nessun comando COPY in corso\n" -#: fe-exec.c:2559 +#: fe-exec.c:2576 msgid "connection in wrong state\n" msgstr "la connessione è in uno stato errato\n" -#: fe-exec.c:2590 +#: fe-exec.c:2607 msgid "invalid ExecStatusType code" msgstr "codice ExecStatusType errato" -#: fe-exec.c:2617 +#: fe-exec.c:2634 msgid "PGresult is not an error result\n" msgstr "PGresult non è un risultato di errore\n" -#: fe-exec.c:2692 fe-exec.c:2715 +#: fe-exec.c:2709 fe-exec.c:2732 #, c-format msgid "column number %d is out of range 0..%d" msgstr "la colonna numero %d non è compreso tra 0 e %d" -#: fe-exec.c:2708 +#: fe-exec.c:2725 #, c-format msgid "row number %d is out of range 0..%d" msgstr "la riga numero %d non è compreso tra 0 e %d" -#: fe-exec.c:2730 +#: fe-exec.c:2747 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "il parametro numero %d non è compreso tra 0 e %d" -#: fe-exec.c:3040 +#: fe-exec.c:3057 #, c-format msgid "could not interpret result from server: %s" msgstr "errore nell'interpretazione del risultato dal server: %s" -#: fe-exec.c:3279 fe-exec.c:3363 +#: fe-exec.c:3296 fe-exec.c:3380 msgid "incomplete multibyte character\n" msgstr "carattere multibyte incompleto\n" @@ -678,7 +683,7 @@ msgstr "intero di dimensione %lu non supportato da pqPutInt" msgid "connection not open\n" msgstr "connessione non aperta\n" -#: fe-misc.c:812 fe-secure-openssl.c:270 fe-secure-openssl.c:379 +#: fe-misc.c:812 fe-secure-openssl.c:231 fe-secure-openssl.c:340 #: fe-secure.c:253 fe-secure.c:362 msgid "" "server closed the connection unexpectedly\n" @@ -717,9 +722,9 @@ msgstr "stato %c non valido, probabilmente indica una corruzione di memoria\n" msgid "message type 0x%02x arrived from server while idle" msgstr "messaggio tipo 0x%02x arrivato dal server mentre era inattivo" -#: fe-protocol2.c:503 fe-protocol2.c:538 fe-protocol2.c:1049 -#: fe-protocol3.c:209 fe-protocol3.c:236 fe-protocol3.c:253 fe-protocol3.c:333 -#: fe-protocol3.c:728 fe-protocol3.c:951 +#: fe-protocol2.c:503 fe-protocol2.c:538 fe-protocol2.c:1049 fe-protocol3.c:209 +#: fe-protocol3.c:236 fe-protocol3.c:253 fe-protocol3.c:333 fe-protocol3.c:728 +#: fe-protocol3.c:951 msgid "out of memory" msgstr "memoria esaurita" @@ -878,153 +883,148 @@ msgstr "RIGA %d: " msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: COPY OUT testuale ignorato\n" -#: fe-secure-openssl.c:146 fe-secure-openssl.c:1030 fe-secure-openssl.c:1250 -#, c-format -msgid "could not acquire mutex: %s\n" -msgstr "acquisizione del mutex fallita: %s\n" - -#: fe-secure-openssl.c:158 -#, c-format -msgid "could not establish SSL connection: %s\n" -msgstr "non è stato possibile stabilire una connessione SSL: %s\n" - -#: fe-secure-openssl.c:275 fe-secure-openssl.c:384 fe-secure-openssl.c:1376 +#: fe-secure-openssl.c:236 fe-secure-openssl.c:345 fe-secure-openssl.c:1323 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "errore SSL SYSCALL: %s\n" -#: fe-secure-openssl.c:282 fe-secure-openssl.c:391 fe-secure-openssl.c:1380 +#: fe-secure-openssl.c:243 fe-secure-openssl.c:352 fe-secure-openssl.c:1327 msgid "SSL SYSCALL error: EOF detected\n" msgstr "errore SSL SYSCALL: rilevato EOF\n" -#: fe-secure-openssl.c:293 fe-secure-openssl.c:402 fe-secure-openssl.c:1389 +#: fe-secure-openssl.c:254 fe-secure-openssl.c:363 fe-secure-openssl.c:1336 #, c-format msgid "SSL error: %s\n" msgstr "errore SSL: %s\n" -#: fe-secure-openssl.c:308 fe-secure-openssl.c:417 +#: fe-secure-openssl.c:269 fe-secure-openssl.c:378 msgid "SSL connection has been closed unexpectedly\n" msgstr "la connessione SSL è stata chiusa inaspettatamente\n" -#: fe-secure-openssl.c:314 fe-secure-openssl.c:423 fe-secure-openssl.c:1398 +#: fe-secure-openssl.c:275 fe-secure-openssl.c:384 fe-secure-openssl.c:1345 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "codice di errore SSL sconosciuto: %d\n" -#: fe-secure-openssl.c:535 +#: fe-secure-openssl.c:495 msgid "SSL certificate's name entry is missing\n" msgstr "manca il nome del certificato SSL\n" -#: fe-secure-openssl.c:565 +#: fe-secure-openssl.c:529 msgid "SSL certificate's name contains embedded null\n" msgstr "Il nome del certificato SSL contiene null\n" -#: fe-secure-openssl.c:616 +#: fe-secure-openssl.c:580 msgid "host name must be specified for a verified SSL connection\n" msgstr "il nome dell'host dev'essere specificato per una connessione SSL verificata\n" -#: fe-secure-openssl.c:716 +#: fe-secure-openssl.c:680 #, c-format msgid "server certificate for \"%s\" does not match host name \"%s\"\n" msgstr "il certificato per il server \"%s\" non combacia col nome host \"%s\"\n" -#: fe-secure-openssl.c:722 +#: fe-secure-openssl.c:686 msgid "could not get server's host name from server certificate\n" msgstr "impossibile ottenere il nome dell'host del server dal certificato del server\n" -#: fe-secure-openssl.c:869 +#: fe-secure-openssl.c:930 #, c-format msgid "could not create SSL context: %s\n" msgstr "creazione del contesto SSL fallita: %s\n" -#: fe-secure-openssl.c:1000 +#: fe-secure-openssl.c:967 +#, c-format +msgid "could not read root certificate file \"%s\": %s\n" +msgstr "lettura del file di certificato radice \"%s\" fallita: %s\n" + +#: fe-secure-openssl.c:995 +#, c-format +msgid "SSL library does not support CRL certificates (file \"%s\")\n" +msgstr "la libreria SSL non supporta i certificati di tipo CRL (file \"%s\")\n" + +#: fe-secure-openssl.c:1023 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"directory utente non trovata per la locazione del file di certificato radice\n" +"Per favore fornisci il file oppure cambia sslmode per disabilitare la verifica del certificato del server.\n" + +#: fe-secure-openssl.c:1027 +#, c-format +msgid "" +"root certificate file \"%s\" does not exist\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"il file \"%s\" del certificato radice non esiste\n" +"Per favore fornisci il file oppure cambia sslmode per disabilitare la verifica del certificato del server.\n" + +#: fe-secure-openssl.c:1058 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "apertura del file di certificato \"%s\" fallita: %s\n" -#: fe-secure-openssl.c:1039 fe-secure-openssl.c:1054 +#: fe-secure-openssl.c:1077 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "lettura del file di certificato \"%s\" fallita: %s\n" -#: fe-secure-openssl.c:1109 +#: fe-secure-openssl.c:1101 +#, c-format +msgid "could not establish SSL connection: %s\n" +msgstr "non è stato possibile stabilire una connessione SSL: %s\n" + +#: fe-secure-openssl.c:1155 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "caricamento del motore SSL \"%s\" fallito: %s\n" -#: fe-secure-openssl.c:1121 +#: fe-secure-openssl.c:1167 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "inizializzazione del motore SSL \"%s\" fallita: %s\n" -#: fe-secure-openssl.c:1137 +#: fe-secure-openssl.c:1183 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "lettura del file della chiave privata SSL \"%s\" dal motore \"%s\" fallita: %s\n" -#: fe-secure-openssl.c:1151 +#: fe-secure-openssl.c:1197 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "caricamento della chiave privata SSL \"%s\" dal motore \"%s\" fallito: %s\n" -#: fe-secure-openssl.c:1188 +#: fe-secure-openssl.c:1234 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "certificato trovato, ma non la chiave privata \"%s\"\n" -#: fe-secure-openssl.c:1196 +#: fe-secure-openssl.c:1242 #, c-format msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "Il file della chiave privata \"%s\" ha privilegi di accesso in lettura e scrittura per tutti; i permessi dovrebbero essere u=rw (0600) o inferiori\n" -#: fe-secure-openssl.c:1207 +#: fe-secure-openssl.c:1253 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "caricamento del file della chiave privata \"%s\" fallito: %s\n" -#: fe-secure-openssl.c:1221 +#: fe-secure-openssl.c:1267 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "il certificato non corrisponde con il file della chiave privata \"%s\": %s\n" -#: fe-secure-openssl.c:1259 -#, c-format -msgid "could not read root certificate file \"%s\": %s\n" -msgstr "lettura del file di certificato radice \"%s\" fallita: %s\n" - -#: fe-secure-openssl.c:1289 -#, c-format -msgid "SSL library does not support CRL certificates (file \"%s\")\n" -msgstr "la libreria SSL non supporta i certificati di tipo CRL (file \"%s\")\n" - -#: fe-secure-openssl.c:1322 -msgid "" -"could not get home directory to locate root certificate file\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" -msgstr "" -"directory utente non trovata per la locazione del file di certificato radice\n" -"Per favore fornisci il file oppure cambia sslmode per disabilitare la verifica del certificato del server.\n" - -#: fe-secure-openssl.c:1326 -#, c-format -msgid "" -"root certificate file \"%s\" does not exist\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" -msgstr "" -"il file \"%s\" del certificato radice non esiste\n" -"Per favore fornisci il file oppure cambia sslmode per disabilitare la verifica del certificato del server.\n" - -#: fe-secure-openssl.c:1419 +#: fe-secure-openssl.c:1366 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "non è stato possibile possibile ottenere il certificato: %s\n" -#: fe-secure-openssl.c:1511 +#: fe-secure-openssl.c:1458 #, c-format msgid "no SSL error reported" msgstr "nessun errore SSL riportato" -#: fe-secure-openssl.c:1520 +#: fe-secure-openssl.c:1467 #, c-format msgid "SSL error code %lu" msgstr "codice di errore SSL: %lu" diff --git a/src/interfaces/libpq/po/ja.po b/src/interfaces/libpq/po/ja.po index b7335b639b..be9bf4bf01 100644 --- a/src/interfaces/libpq/po/ja.po +++ b/src/interfaces/libpq/po/ja.po @@ -3,11 +3,11 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.1 beta 2\n" +"Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2013-08-18 12:53+0900\n" +"POT-Creation-Date: 2017-04-11 10:23+0900\n" "PO-Revision-Date: 2014-08-16 16:38+0900\n" -"Last-Translator: HOTTA Michihide \n" +"Last-Translator: OkanoNaoki \n" "Language-Team: jpug-doc \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -15,100 +15,101 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 -msgid "host name must be specified\n" -msgstr "ホストåを指定ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" - -#: fe-auth.c:240 -#, c-format -msgid "could not set socket to blocking mode: %s\n" -msgstr "ソケットをブロッキングモードã«è¨­å®šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: fe-auth.c:258 fe-auth.c:262 -#, c-format -msgid "Kerberos 5 authentication rejected: %*s\n" -msgstr "Kerberos 5èªè¨¼ãŒæ‹’çµ¶ã•れã¾ã—ãŸ: %*s\n" - -#: fe-auth.c:288 -#, c-format -#| msgid "could not restore non-blocking mode on socket: %s\n" -msgid "could not restore nonblocking mode on socket: %s\n" -msgstr "ソケットをéžãƒ–ãƒ­ãƒƒã‚­ãƒ³ã‚°ãƒ¢ãƒ¼ãƒ‰ã«æˆ»ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: fe-auth.c:400 +#: fe-auth.c:148 msgid "GSSAPI continuation error" msgstr "GSSAI続行エラー" -#: fe-auth.c:436 +#: fe-auth.c:177 fe-auth.c:412 +msgid "host name must be specified\n" +msgstr "ホストåを指定ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" + +#: fe-auth.c:184 msgid "duplicate GSS authentication request\n" msgstr "é‡è¤‡ã™ã‚‹GSSèªè¨¼è¦æ±‚\n" -#: fe-auth.c:456 +#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:383 fe-auth.c:418 fe-auth.c:514 +#: fe-auth.c:780 fe-connect.c:707 fe-connect.c:904 fe-connect.c:1080 +#: fe-connect.c:2091 fe-connect.c:3484 fe-connect.c:3736 fe-connect.c:3855 +#: fe-connect.c:4095 fe-connect.c:4175 fe-connect.c:4274 fe-connect.c:4530 +#: fe-connect.c:4559 fe-connect.c:4631 fe-connect.c:4649 fe-connect.c:4745 +#: fe-connect.c:5079 fe-connect.c:5229 fe-exec.c:2651 fe-exec.c:3398 +#: fe-exec.c:3563 fe-lobj.c:896 fe-protocol2.c:1206 fe-protocol3.c:992 +#: fe-protocol3.c:1678 fe-secure-openssl.c:515 fe-secure-openssl.c:1139 +msgid "out of memory\n" +msgstr "メモリä¸è¶³ã§ã™\n" + +#: fe-auth.c:210 msgid "GSSAPI name import error" msgstr "GSSAPIåã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚¨ãƒ©ãƒ¼" -#: fe-auth.c:542 +#: fe-auth.c:298 msgid "SSPI continuation error" msgstr "SSPI続行エラー" -#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:758 fe-connect.c:2005 -#: fe-connect.c:3393 fe-connect.c:3611 fe-connect.c:4023 fe-connect.c:4118 -#: fe-connect.c:4383 fe-connect.c:4452 fe-connect.c:4469 fe-connect.c:4560 -#: fe-connect.c:4910 fe-connect.c:5060 fe-exec.c:3296 fe-exec.c:3461 -#: fe-lobj.c:896 fe-protocol2.c:1181 fe-protocol3.c:1544 fe-secure.c:786 -#: fe-secure.c:1184 -msgid "out of memory\n" -msgstr "メモリä¸è¶³ã§ã™\n" - -#: fe-auth.c:642 +#: fe-auth.c:398 msgid "could not acquire SSPI credentials" msgstr "SSPI資格を入手ã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: fe-auth.c:733 +#: fe-auth.c:489 msgid "SCM_CRED authentication method not supported\n" msgstr "SCM_CREDèªè¨¼æ–¹å¼ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: fe-auth.c:809 +#: fe-auth.c:565 msgid "Kerberos 4 authentication not supported\n" msgstr "Kerberos 4èªè¨¼ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: fe-auth.c:825 +#: fe-auth.c:570 msgid "Kerberos 5 authentication not supported\n" msgstr "Kerberos 5èªè¨¼ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: fe-auth.c:897 +#: fe-auth.c:641 msgid "GSSAPI authentication not supported\n" msgstr "GSSAPIèªè¨¼ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: fe-auth.c:929 +#: fe-auth.c:673 msgid "SSPI authentication not supported\n" msgstr "SSPIèªè¨¼ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: fe-auth.c:937 +#: fe-auth.c:681 msgid "Crypt authentication not supported\n" msgstr "Cryptèªè¨¼ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: fe-auth.c:964 +#: fe-auth.c:708 #, c-format msgid "authentication method %u not supported\n" msgstr "èªè¨¼æ–¹å¼%uã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: fe-connect.c:798 +#: fe-auth.c:755 +#, c-format +msgid "user name lookup failure: error code %lu\n" +msgstr "ユーザåã®æ¤œç´¢ã«å¤±æ•—: エラーコード %lu\n" + +#: fe-auth.c:765 fe-connect.c:2018 +#, c-format +msgid "could not look up local user ID %d: %s\n" +msgstr "ローカルユーザID %d ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: fe-auth.c:770 fe-connect.c:2023 +#, c-format +msgid "local user with ID %d does not exist\n" +msgstr "ID %d ã‚’æŒã¤ãƒ­ãƒ¼ã‚«ãƒ«ãƒ¦ãƒ¼ã‚¶ã¯å­˜åœ¨ã—ã¾ã›ã‚“\n" + +#: fe-connect.c:846 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "sslmodeã®å€¤ãŒç„¡åйã§ã™: \"%s\"\n" -#: fe-connect.c:819 +#: fe-connect.c:867 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "SSLサãƒãƒ¼ãƒˆãŒçµ„ã¿è¾¼ã¾ã‚Œã¦ã„ãªã„å ´åˆsslmodeã®å€¤\"%s\"ã¯ç„¡åйã§ã™\n" -#: fe-connect.c:1023 +#: fe-connect.c:1104 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "TCPソケットをéžé…延モードã«è¨­å®šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:1053 +#: fe-connect.c:1134 #, c-format msgid "" "could not connect to server: %s\n" @@ -119,7 +120,7 @@ msgstr "" " ローカルã«ã‚µãƒ¼ãƒãŒç¨¼å‹•ã—ã¦ã„ã¾ã™ã‹?\n" " Unixドメインソケット\"%s\"ã§é€šä¿¡ã‚’å—ã‘付ã‘ã¦ã„ã¾ã™ã‹?\n" -#: fe-connect.c:1108 +#: fe-connect.c:1189 #, c-format msgid "" "could not connect to server: %s\n" @@ -130,7 +131,7 @@ msgstr "" "\tサーãƒã¯ãƒ›ã‚¹ãƒˆ \"%s\" (%s) ã§ç¨¼å‹•ã—ã¦ãŠã‚Šã€\n" "\tã¾ãŸã€ãƒãƒ¼ãƒˆ %s ã§ TCP/IP 接続をå—ã‘付ã‘ã¦ã„ã¾ã™ã‹?\n" -#: fe-connect.c:1117 +#: fe-connect.c:1198 #, c-format msgid "" "could not connect to server: %s\n" @@ -141,399 +142,400 @@ msgstr "" "\tサーãƒã¯ãƒ›ã‚¹ãƒˆ\"%s\"ã§ç¨¼å‹•ã—ã¦ã„ã¾ã™ã‹?\n" "\tã¾ãŸã€ãƒãƒ¼ãƒˆ%sã§TCP/IP接続をå—ã‘付ã‘ã¦ã„ã¾ã™ã‹?\n" -#: fe-connect.c:1168 +#: fe-connect.c:1249 #, c-format msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" msgstr "setsockopt(TCP_KEEPIDLE)ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s\n" -#: fe-connect.c:1181 +#: fe-connect.c:1262 #, c-format msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" msgstr "setsockopt(TCP_KEEPALIVE)ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s\n" -#: fe-connect.c:1213 +#: fe-connect.c:1294 #, c-format msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" msgstr "setsockopt(TCP_KEEPINTVL)ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s\n" -#: fe-connect.c:1245 +#: fe-connect.c:1326 #, c-format msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" msgstr "setsockopt(TCP_KEEPCNT)ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s\n" -#: fe-connect.c:1293 +#: fe-connect.c:1374 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS)ã«å¤±æ•—ã—ã¾ã—ãŸ:%ui\n" -#: fe-connect.c:1345 +#: fe-connect.c:1426 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "無効ãªãƒãƒ¼ãƒˆç•ªå·ã§ã™: \"%s\"\n" -#: fe-connect.c:1378 +#: fe-connect.c:1459 #, c-format -#| msgid "backup label too long (max %d bytes)" msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "Unixドメインソケットã®ãƒ‘ス\"%s\"ãŒé•·ã™ãŽã¾ã™(最大 %d ãƒã‚¤ãƒˆ)\n" -#: fe-connect.c:1397 +#: fe-connect.c:1478 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "ホストå\"%s\"をアドレスã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:1401 +#: fe-connect.c:1482 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "Unixドメインソケットã®ãƒ‘ス\"%s\"をアドレスã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:1606 +#: fe-connect.c:1687 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "接続状態ãŒç„¡åйã§ã™ã€‚メモリ障害ã®å¯èƒ½æ€§ãŒã‚りã¾ã™\n" -#: fe-connect.c:1647 +#: fe-connect.c:1727 #, c-format msgid "could not create socket: %s\n" msgstr "ソケットを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:1669 +#: fe-connect.c:1749 #, c-format -#| msgid "could not set socket to non-blocking mode: %s\n" msgid "could not set socket to nonblocking mode: %s\n" msgstr "ソケットをéžãƒ–ロッキングモードã«è¨­å®šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:1680 +#: fe-connect.c:1760 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "ソケットをclose-on-execモードã«è¨­å®šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:1699 +#: fe-connect.c:1779 msgid "keepalives parameter must be an integer\n" msgstr "keepaliveã®ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã¯æ•´æ•°ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: fe-connect.c:1712 +#: fe-connect.c:1792 #, c-format msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" msgstr "setsockopt(SO_KEEPALIVE)ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s\n" -#: fe-connect.c:1849 +#: fe-connect.c:1929 #, c-format msgid "could not get socket error status: %s\n" msgstr "ソケットã®ã‚¨ãƒ©ãƒ¼çŠ¶æ…‹ã‚’å…¥æ‰‹ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:1883 +#: fe-connect.c:1963 #, c-format msgid "could not get client address from socket: %s\n" msgstr "ソケットã‹ã‚‰ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入手ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:1924 +#: fe-connect.c:2005 msgid "requirepeer parameter is not supported on this platform\n" msgstr "ã“ã®ãƒ—ラットフォームã§ã¯ requirepeer パラメータã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: fe-connect.c:1927 +#: fe-connect.c:2008 #, c-format msgid "could not get peer credentials: %s\n" msgstr "ピアã®è³‡æ ¼è¨¼æ˜Žã‚’入手ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:1937 -#, c-format -msgid "local user with ID %d does not exist\n" -msgstr "ID %d ã‚’æŒã¤ãƒ­ãƒ¼ã‚«ãƒ«ãƒ¦ãƒ¼ã‚¶ã¯å­˜åœ¨ã—ã¾ã›ã‚“\n" - -#: fe-connect.c:1945 +#: fe-connect.c:2031 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "requirepeerã¯\"%s\"を指定ã—ã¦ã„ã¾ã™ãŒã€å®Ÿéš›ã®ãƒ”ã‚¢åã¯\"%s\"ã§ã™\n" -#: fe-connect.c:1979 +#: fe-connect.c:2065 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "SSL調åœãƒ‘ケットをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:2018 +#: fe-connect.c:2104 #, c-format msgid "could not send startup packet: %s\n" msgstr "開始パケットをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-connect.c:2088 +#: fe-connect.c:2174 msgid "server does not support SSL, but SSL was required\n" msgstr "サーãƒã¯SSLをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“ãŒã€SSLãŒè¦æ±‚ã•れã¾ã—ãŸ\n" -#: fe-connect.c:2114 +#: fe-connect.c:2200 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "SSL調åœã«å¯¾ã—ã¦ç„¡åйãªå¿œç­”ã‚’å—ä¿¡ã—ã¾ã—ãŸ: %c\n" -#: fe-connect.c:2189 fe-connect.c:2222 +#: fe-connect.c:2275 fe-connect.c:2308 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "サーãƒã‹ã‚‰ã®èªè¨¼è¦æ±‚を想定ã—ã¦ã„ã¾ã—ãŸãŒã€%cã‚’å—ä¿¡ã—ã¾ã—ãŸ\n" -#: fe-connect.c:2389 +#: fe-connect.c:2475 #, c-format msgid "out of memory allocating GSSAPI buffer (%d)" msgstr "GSSAPIãƒãƒƒãƒ•ã‚¡ã®å‰²ã‚Šå½“ã¦æ™‚ã®ãƒ¡ãƒ¢ãƒªä¸è¶³(%d)" -#: fe-connect.c:2474 +#: fe-connect.c:2560 msgid "unexpected message from server during startup\n" msgstr "起動時ã«ã‚µãƒ¼ãƒã‹ã‚‰æƒ³å®šå¤–ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚りã¾ã—ãŸ\n" -#: fe-connect.c:2568 +#: fe-connect.c:2654 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "接続状態%dãŒç„¡åйã§ã™ã€‚メモリ障害ã®å¯èƒ½æ€§ãŒã‚りã¾ã™\n" -#: fe-connect.c:3001 fe-connect.c:3061 +#: fe-connect.c:3090 fe-connect.c:3150 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEVT_CONNRESETイベント中ã«PGEventProc \"%s\"ã«å¤±æ•—ã—ã¾ã—ãŸ\n" -#: fe-connect.c:3406 +#: fe-connect.c:3497 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "無効ãªLDAP URL\"%s\":スキーマã¯ldap://ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: fe-connect.c:3421 +#: fe-connect.c:3512 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "無効ãªLDAP URL \"%s\": 区別åãŒã‚りã¾ã›ã‚“\n" -#: fe-connect.c:3432 fe-connect.c:3485 +#: fe-connect.c:3523 fe-connect.c:3576 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "無効ãªLDAP URL \"%s\": 正確ã«1ã¤ã®å±žæ€§ã‚’æŒãŸãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: fe-connect.c:3442 fe-connect.c:3499 +#: fe-connect.c:3533 fe-connect.c:3590 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "無効ãªLDAP URL \"%s\": 検索スコープ(base/one/sub)ã‚’æŒãŸãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: fe-connect.c:3453 +#: fe-connect.c:3544 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "無効ãªLDAP URL \"%s\": フィルタãŒã‚りã¾ã›ã‚“\n" -#: fe-connect.c:3474 +#: fe-connect.c:3565 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "無効ãªLDAP URL \"%s\": ãƒãƒ¼ãƒˆç•ªå·ãŒç„¡åйã§ã™\n" -#: fe-connect.c:3508 +#: fe-connect.c:3599 msgid "could not create LDAP structure\n" msgstr "LDAP構造体を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: fe-connect.c:3550 +#: fe-connect.c:3675 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "LDAPサーãƒã§æ¤œç´¢ã«å¤±æ•—ã—ã¾ã—ãŸ: %s\n" -#: fe-connect.c:3561 +#: fe-connect.c:3686 msgid "more than one entry found on LDAP lookup\n" msgstr "LDAPæ¤œç´¢çµæžœãŒè¤‡æ•°ã‚りã¾ã—ãŸ\n" -#: fe-connect.c:3562 fe-connect.c:3574 +#: fe-connect.c:3687 fe-connect.c:3699 msgid "no entry found on LDAP lookup\n" msgstr "LDAPæ¤œç´¢çµæžœãŒç©ºã§ã—ãŸ\n" -#: fe-connect.c:3585 fe-connect.c:3598 +#: fe-connect.c:3710 fe-connect.c:3723 msgid "attribute has no values on LDAP lookup\n" msgstr "LDAP検索ã§å±žæ€§ã«å€¤ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: fe-connect.c:3650 fe-connect.c:3669 fe-connect.c:4157 +#: fe-connect.c:3775 fe-connect.c:3794 fe-connect.c:4313 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "接続情報文字列ã«ãŠã„ã¦\"%s\"ã®å¾Œã«\"=\"ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: fe-connect.c:3733 fe-connect.c:4337 fe-connect.c:5042 +#: fe-connect.c:3867 fe-connect.c:4498 fe-connect.c:5212 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "接続オプション\"%s\"ã¯ç„¡åйã§ã™\n" -#: fe-connect.c:3749 fe-connect.c:4206 +#: fe-connect.c:3883 fe-connect.c:4362 msgid "unterminated quoted string in connection info string\n" msgstr "接続情報文字列ã«ãŠã„ã¦é–‰ã˜ã¦ã„ãªã„引用符ãŒã‚りã¾ã—ãŸ\n" -#: fe-connect.c:3788 +#: fe-connect.c:3923 msgid "could not get home directory to locate service definition file" msgstr "サーãƒè¨­å®šãƒ•ァイルã®å ´æ‰€ã‚’特定ã—よã†ã¨ã—ã¾ã—ãŸãŒã€ãƒ›ãƒ¼ãƒ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" -#: fe-connect.c:3821 +#: fe-connect.c:3956 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "サービス定義\"%s\"ãŒã¿ã¤ã‹ã‚Šã¾ã›ã‚“\n" -#: fe-connect.c:3844 +#: fe-connect.c:3979 #, c-format msgid "service file \"%s\" not found\n" msgstr "サービスファイル\"%s\"ãŒã¿ã¤ã‹ã‚Šã¾ã›ã‚“\n" -#: fe-connect.c:3857 +#: fe-connect.c:3992 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "サービスファイル\"%2$s\"ã®è¡Œ%1$dãŒé•·ã™ãŽã¾ã™ã€‚\n" -#: fe-connect.c:3928 fe-connect.c:3955 +#: fe-connect.c:4063 fe-connect.c:4107 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "サービスファイル\"%s\"ã®è¡Œ%dã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™\n" -#: fe-connect.c:4570 +#: fe-connect.c:4074 +#, c-format +msgid "nested service specifications not supported in service file \"%s\", line %d\n" +msgstr "サービスファイル\"%s\"ã®è¡Œ%dã«ãŠã„ã¦ã€å…¥ã‚Œå­ã®ã‚µãƒ¼ãƒ“ス指定ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" + +#: fe-connect.c:4756 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "内部パーサ処ç†ã¸ä¼ã‚ã£ãŸç„¡åйãªURI: \"%s\"\n" -#: fe-connect.c:4640 +#: fe-connect.c:4826 #, c-format msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" msgstr "URI \"%s\"内ã®IPv6ホストアドレスã«ãŠã„ã¦å¯¾å¿œã™ã‚‹\"]\"を探ã—ã¦ã„ã‚‹é–“ã«æ–‡å­—列ãŒçµ‚ã‚りã¾ã—ãŸ\n" -#: fe-connect.c:4647 +#: fe-connect.c:4833 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "URI \"%s\"内ã®IPv6ホストアドレスãŒç©ºã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™\n" -#: fe-connect.c:4662 +#: fe-connect.c:4848 #, c-format msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" msgstr "URI(\":\"ã¨\"/\"を除ã)内ã®ä½ç½®%2$dã«æƒ³å®šå¤–ã®\"%1$c\"文字ãŒã‚りã¾ã™: \"%3$s\"\n" -#: fe-connect.c:4776 +#: fe-connect.c:4962 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "URIå•ã„åˆã‚ã›ãƒ‘ラメータ内ã«ä½™åˆ†ãªã‚­ãƒ¼ã¨å€¤ã‚’分ã‘ã‚‹\"=\"ãŒã‚りã¾ã™: \"%s\"\n" -#: fe-connect.c:4796 +#: fe-connect.c:4982 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "URIå•ã„åˆã‚ã›ãƒ‘ラメータ内ã«ã‚­ãƒ¼ã¨å€¤ã‚’分ã‘ã‚‹\\\"=\\\"ãŒã‚りã¾ã¾ã›ã‚“: \"%s\"\n" -#: fe-connect.c:4867 +#: fe-connect.c:5033 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "無効ãªURIå•ã„åˆã‚ã›ãƒ‘ラメータ:\"%s\"\n" -#: fe-connect.c:4937 +#: fe-connect.c:5107 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "無効ãªãƒ‘ーセント符å·åŒ–トークン: \"%s\"\n" -#: fe-connect.c:4947 +#: fe-connect.c:5117 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "パーセント符å·åŒ–ã•れãŸå€¤ã§ã¯%%00値ã¯è¨±ã•れã¾ã›ã‚“: \"%s\"\n" -#: fe-connect.c:5270 +#: fe-connect.c:5451 msgid "connection pointer is NULL\n" msgstr "接続ãƒã‚¤ãƒ³ã‚¿ã¯NULLã§ã™\n" -#: fe-connect.c:5547 +#: fe-connect.c:5749 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "WARNING: パスワードファイル\"%s\"ãŒãƒ†ã‚­ã‚¹ãƒˆãƒ•ァイルã§ã¯ã‚りã¾ã›ã‚“\n" -#: fe-connect.c:5556 +#: fe-connect.c:5758 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "警告: パスワードファイル \"%s\" ãŒã‚°ãƒ«ãƒ¼ãƒ—メンãƒã‚‚ã—ãã¯ä»–ã®ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰èª­ã‚る状態ã«ãªã£ã¦ã„ã¾ã™ã€‚ã“ã®æ¨©é™ã¯u=rw (0600)以下ã«ã™ã¹ãã§ã™\n" -#: fe-connect.c:5656 +#: fe-connect.c:5872 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "ファイル\"%s\"ã‹ã‚‰ãƒ‘スワードを読ã¿è¾¼ã¿ã¾ã—ãŸ\n" -#: fe-exec.c:824 +#: fe-exec.c:826 msgid "NOTICE" msgstr "注æ„" -#: fe-exec.c:1120 fe-exec.c:1178 fe-exec.c:1224 +#: fe-exec.c:1141 fe-exec.c:1199 fe-exec.c:1245 msgid "command string is a null pointer\n" msgstr "コマンド文字列ãŒãƒŒãƒ«ãƒã‚¤ãƒ³ã‚¿ã§ã™\n" -#: fe-exec.c:1184 fe-exec.c:1230 fe-exec.c:1325 -#| msgid "interval(%d) precision must be between %d and %d" +#: fe-exec.c:1205 fe-exec.c:1251 fe-exec.c:1346 msgid "number of parameters must be between 0 and 65535\n" msgstr "パラメータ数ã¯0ã‹ã‚‰65535ã¾ã§ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: fe-exec.c:1218 fe-exec.c:1319 +#: fe-exec.c:1239 fe-exec.c:1340 msgid "statement name is a null pointer\n" msgstr "æ–‡ã®åå‰ãŒãƒŒãƒ«ãƒã‚¤ãƒ³ã‚¿ã§ã™\n" -#: fe-exec.c:1238 fe-exec.c:1402 fe-exec.c:2096 fe-exec.c:2295 +#: fe-exec.c:1259 fe-exec.c:1422 fe-exec.c:2140 fe-exec.c:2339 msgid "function requires at least protocol version 3.0\n" msgstr "関数ã¯å°‘ãªãã¨ã‚‚プロトコルãƒãƒ¼ã‚¸ãƒ§ãƒ³3.0ãŒå¿…è¦ã§ã™\n" -#: fe-exec.c:1356 +#: fe-exec.c:1377 msgid "no connection to the server\n" msgstr "サーãƒã¸ã®æŽ¥ç¶šãŒã‚りã¾ã›ã‚“\n" -#: fe-exec.c:1363 +#: fe-exec.c:1384 msgid "another command is already in progress\n" msgstr "ä»–ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’処ç†ã—ã¦ã„ã¾ã™\n" -#: fe-exec.c:1478 +#: fe-exec.c:1498 msgid "length must be given for binary parameter\n" msgstr "ãƒã‚¤ãƒŠãƒªãƒ‘ラメータã«ã¯é•·ã•を指定ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: fe-exec.c:1756 +#: fe-exec.c:1770 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "想定外ã®asyncStatus: %d\n" -#: fe-exec.c:1776 +#: fe-exec.c:1790 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEVT_RESULTCREATEイベント中ã«PGEventProc \"%s\"ã«å¤±æ•—ã—ã¾ã—ãŸ\n" -#: fe-exec.c:1906 +#: fe-exec.c:1950 msgid "COPY terminated by new PQexec" msgstr "æ–°ãŸãªPQexec\"ã«ã‚ˆã‚ŠCOPYãŒçµ‚了ã—ã¾ã—ãŸ" -#: fe-exec.c:1914 +#: fe-exec.c:1958 msgid "COPY IN state must be terminated first\n" msgstr "ã¾ãšCOPY IN状態を終了ã•ã›ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: fe-exec.c:1934 +#: fe-exec.c:1978 msgid "COPY OUT state must be terminated first\n" msgstr "ã¾ãšCOPY OUT状態を終了ã•ã›ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: fe-exec.c:1942 +#: fe-exec.c:1986 msgid "PQexec not allowed during COPY BOTH\n" msgstr "COPY BOTH 実行中㮠PQexec ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“\n" -#: fe-exec.c:2185 fe-exec.c:2252 fe-exec.c:2342 fe-protocol2.c:1327 -#: fe-protocol3.c:1683 +#: fe-exec.c:2229 fe-exec.c:2296 fe-exec.c:2386 fe-protocol2.c:1352 +#: fe-protocol3.c:1817 msgid "no COPY in progress\n" msgstr "実行中ã®COPYã¯ã‚りã¾ã›ã‚“\n" -#: fe-exec.c:2534 +#: fe-exec.c:2576 msgid "connection in wrong state\n" msgstr "接続状態ãŒç•°å¸¸ã§ã™\n" -#: fe-exec.c:2565 +#: fe-exec.c:2607 msgid "invalid ExecStatusType code" msgstr "ExecStatusTypeコードãŒç„¡åйã§ã™" -#: fe-exec.c:2629 fe-exec.c:2652 +#: fe-exec.c:2634 +msgid "PGresult is not an error result\n" +msgstr "PGresultã¯ã‚¨ãƒ©ãƒ¼ã®çµæžœã§ã¯ã‚りã¾ã›ã‚“\n" + +#: fe-exec.c:2709 fe-exec.c:2732 #, c-format msgid "column number %d is out of range 0..%d" msgstr "列番å·%dã¯0..%dã®ç¯„囲を超ãˆã¦ã„ã¾ã™" -#: fe-exec.c:2645 +#: fe-exec.c:2725 #, c-format msgid "row number %d is out of range 0..%d" msgstr "行番å·%dã¯0..%dã®ç¯„囲を超ãˆã¦ã„ã¾ã™" -#: fe-exec.c:2667 +#: fe-exec.c:2747 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "パラメータ%dã¯0..%dã®ç¯„囲を超ãˆã¦ã„ã¾ã™" -#: fe-exec.c:2955 +#: fe-exec.c:3057 #, c-format msgid "could not interpret result from server: %s" msgstr "サーãƒã‹ã‚‰ã®çµæžœã‚’解釈ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: fe-exec.c:3194 fe-exec.c:3278 +#: fe-exec.c:3296 fe-exec.c:3380 msgid "incomplete multibyte character\n" msgstr "ä¸å®Œå…¨ãªãƒžãƒ«ãƒãƒã‚¤ãƒˆæ–‡å­—\n" @@ -542,27 +544,22 @@ msgid "cannot determine OID of function lo_truncate\n" msgstr "lo_truncate関数ã®OIDを決定ã§ãã¾ã›ã‚“\n" #: fe-lobj.c:171 -#| msgid "Value exceeds integer range." msgid "argument of lo_truncate exceeds integer range\n" msgstr "lo_truncateã¸ã®å¼•æ•°ãŒæ•´æ•°ç¯„囲を超ãˆã¦ã„ã¾ã™ã€‚\n" #: fe-lobj.c:222 -#| msgid "cannot determine OID of function lo_truncate\n" msgid "cannot determine OID of function lo_truncate64\n" msgstr "lo_truncate64関数ã®OIDを決定ã§ãã¾ã›ã‚“\n" #: fe-lobj.c:280 -#| msgid "Value exceeds integer range." msgid "argument of lo_read exceeds integer range\n" msgstr "lo_readã¸ã®å¼•æ•°ãŒæ•´æ•°ç¯„囲を超ãˆã¦ã„ã¾ã™ã€‚\n" #: fe-lobj.c:335 -#| msgid "Value exceeds integer range." msgid "argument of lo_write exceeds integer range\n" msgstr "lo_writeã¸ã®å¼•æ•°ãŒæ•´æ•°ç¯„囲を超ãˆã¦ã„ã¾ã™ã€‚\n" #: fe-lobj.c:426 -#| msgid "cannot determine OID of function lo_lseek\n" msgid "cannot determine OID of function lo_lseek64\n" msgstr "lo_lseek64関数ã®OIDを決定ã§ãã¾ã›ã‚“\n" @@ -571,7 +568,6 @@ msgid "cannot determine OID of function lo_create\n" msgstr "lo_create関数ã®OIDを決定ã§ãã¾ã›ã‚“\n" #: fe-lobj.c:601 -#| msgid "cannot determine OID of function lo_tell\n" msgid "cannot determine OID of function lo_tell64\n" msgstr "lo_tell64関数ã®OIDを決定ã§ãã¾ã›ã‚“\n" @@ -636,12 +632,12 @@ msgstr "サイズ%luã®æ•´æ•°ã¯pqGetIntã§ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" msgid "integer of size %lu not supported by pqPutInt" msgstr "サイズ%luã®æ•´æ•°ã¯pqPutIntã§ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" -#: fe-misc.c:610 fe-misc.c:806 +#: fe-misc.c:642 fe-misc.c:843 msgid "connection not open\n" msgstr "接続ã¯ã‚ªãƒ¼ãƒ—ンã•れã¦ã„ã¾ã›ã‚“\n" -#: fe-misc.c:736 fe-secure.c:382 fe-secure.c:462 fe-secure.c:543 -#: fe-secure.c:652 +#: fe-misc.c:812 fe-secure-openssl.c:231 fe-secure-openssl.c:340 +#: fe-secure.c:253 fe-secure.c:362 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" @@ -651,15 +647,15 @@ msgstr "" " ãŠãらãè¦æ±‚ã®å‡¦ç†å‰ã¾ãŸã¯å‡¦ç†ä¸­ã«ã‚µãƒ¼ãƒãŒç•°å¸¸çµ‚了\n" " ã—ãŸã“ã¨ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚\n" -#: fe-misc.c:970 +#: fe-misc.c:1016 msgid "timeout expired\n" msgstr "タイムアウト期間ãŒéŽãŽã¾ã—ãŸ\n" -#: fe-misc.c:1015 -msgid "socket not open\n" -msgstr "ソケットãŒã‚ªãƒ¼ãƒ—ンã•れã¦ã„ã¾ã›ã‚“\n" +#: fe-misc.c:1061 +msgid "invalid socket\n" +msgstr "無効ãªã‚½ã‚±ãƒƒãƒˆã§ã™\n" -#: fe-misc.c:1038 +#: fe-misc.c:1084 #, c-format msgid "select() failed: %s\n" msgstr "select()ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s\n" @@ -679,317 +675,325 @@ msgstr "状態%cã¯ç„¡åйã§ã™ã€‚メモリ障害ã®å¯èƒ½æ€§ãŒã‚りã¾ã™\n" msgid "message type 0x%02x arrived from server while idle" msgstr "待機中ã«ã‚µãƒ¼ãƒã‹ã‚‰ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ç¨®é¡ž0x%02xãŒå±Šãã¾ã—ãŸ" -#: fe-protocol2.c:522 +#: fe-protocol2.c:503 fe-protocol2.c:538 fe-protocol2.c:1049 +#: fe-protocol3.c:209 fe-protocol3.c:236 fe-protocol3.c:253 fe-protocol3.c:333 +#: fe-protocol3.c:728 fe-protocol3.c:951 +msgid "out of memory" +msgstr "メモリä¸è¶³ã§ã™" + +#: fe-protocol2.c:529 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" msgstr "空ã®å•ã„åˆã‚ã›å¿œç­”(\"I\"メッセージ)ã®å¾Œã«æƒ³å®šå¤–ã®æ–‡å­—%cãŒã‚りã¾ã—ãŸ" -#: fe-protocol2.c:580 +#: fe-protocol2.c:595 #, c-format msgid "server sent data (\"D\" message) without prior row description (\"T\" message)" msgstr "サーãƒãŒäº‹å‰ã®è¡Œè¨˜è¿°(\"T\"メッセージ)ãªã—ã«ãƒ‡ãƒ¼ã‚¿(\"D\"メッセージ)ã‚’é€ä¿¡ã—ã¾ã—ãŸ" -#: fe-protocol2.c:598 +#: fe-protocol2.c:613 #, c-format msgid "server sent binary data (\"B\" message) without prior row description (\"T\" message)" msgstr "サーãƒãŒäº‹å‰ã®è¡Œè¨˜è¿°(\"T\"メッセージ)ãªã—ã«ãƒã‚¤ãƒŠãƒªãƒ‡ãƒ¼ã‚¿(\"B\"メッセージ)ã‚’é€ä¿¡ã—ã¾ã—ãŸ" -#: fe-protocol2.c:618 fe-protocol3.c:385 +#: fe-protocol2.c:633 fe-protocol3.c:412 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "サーãƒã‹ã‚‰æƒ³å®šå¤–ã®å¿œç­”ãŒã‚りã¾ã—ãŸã€‚å—ã‘付ã‘ãŸå…ˆé ­æ–‡å­—ã¯\"%c\"ã§ã™\n" -#: fe-protocol2.c:747 fe-protocol2.c:922 fe-protocol3.c:600 fe-protocol3.c:782 +#: fe-protocol2.c:762 fe-protocol2.c:937 fe-protocol3.c:627 fe-protocol3.c:854 msgid "out of memory for query result" msgstr "å•ã„åˆã‚ã›çµæžœç”¨ã®ãƒ¡ãƒ¢ãƒªãŒä¸è¶³ã—ã¦ã„ã¾ã™" -#: fe-protocol2.c:1370 fe-protocol3.c:1752 +#: fe-protocol2.c:1395 fe-protocol3.c:1886 #, c-format msgid "%s" msgstr "%s" -#: fe-protocol2.c:1382 +#: fe-protocol2.c:1407 #, c-format msgid "lost synchronization with server, resetting connection" msgstr "サーãƒã¨ã®å‹•機ãŒå¤±ã‚れã¾ã—ãŸã€‚接続をリセットã—ã¦ã„ã¾ã™" -#: fe-protocol2.c:1516 fe-protocol2.c:1548 fe-protocol3.c:1955 +#: fe-protocol2.c:1541 fe-protocol2.c:1573 fe-protocol3.c:2089 #, c-format msgid "protocol error: id=0x%x\n" msgstr "プロトコルエラー: id=0x%x\n" -#: fe-protocol3.c:341 +#: fe-protocol3.c:368 msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" msgstr "サーãƒãŒäº‹å‰ã®è¡Œè¨˜è¿°(\"T\"メッセージ)ãªã—ã«ãƒ‡ãƒ¼ã‚¿(\"D\"メッセージ)ã‚’é€ä¿¡ã—ã¾ã—ãŸ\"\n" -#: fe-protocol3.c:406 +#: fe-protocol3.c:433 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "メッセージã®å†…容ãŒãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ç¨®é¡ž\"%c\"ã®é•·ã•ã«åˆã„ã¾ã›ã‚“\n" -#: fe-protocol3.c:427 +#: fe-protocol3.c:454 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "サーãƒã¨ã®åŒæœŸãŒå¤±ã‚れã¾ã—ãŸã€‚å—ä¿¡ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ç¨®é¡žã¯\"%c\"ã€é•·ã•ã¯%d\n" -#: fe-protocol3.c:478 fe-protocol3.c:518 +#: fe-protocol3.c:505 fe-protocol3.c:545 msgid "insufficient data in \"T\" message" msgstr "\"T\"メッセージ内ã®ãƒ‡ãƒ¼ã‚¿ãŒä¸å分ã§ã™" -#: fe-protocol3.c:551 +#: fe-protocol3.c:578 msgid "extraneous data in \"T\" message" msgstr "\"T\"メッセージ内ã®ãƒ‡ãƒ¼ã‚¿ãŒç„¡é–¢ä¿‚ã§ã™" -#: fe-protocol3.c:690 fe-protocol3.c:722 fe-protocol3.c:740 +#: fe-protocol3.c:691 +msgid "extraneous data in \"t\" message" +msgstr "\"t\"メッセージ内ã®ãƒ‡ãƒ¼ã‚¿ãŒç„¡é–¢ä¿‚ã§ã™" + +#: fe-protocol3.c:762 fe-protocol3.c:794 fe-protocol3.c:812 msgid "insufficient data in \"D\" message" msgstr "\"D\"\"メッセージ内ã®ãƒ‡ãƒ¼ã‚¿ãŒä¸å分ã§ã™" -#: fe-protocol3.c:696 +#: fe-protocol3.c:768 msgid "unexpected field count in \"D\" message" msgstr "\"D\"メッセージ内ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰æ•°ãŒæƒ³å®šå¤–ã§ã™ã€‚" -#: fe-protocol3.c:749 +#: fe-protocol3.c:821 msgid "extraneous data in \"D\" message" msgstr "â€D\"メッセージ内ã®ãƒ‡ãƒ¼ã‚¿ãŒç„¡é–¢ä¿‚ã§ã™" +#: fe-protocol3.c:1005 +msgid "no error message available\n" +msgstr "エラーメッセージãŒåˆ©ç”¨ã§ãã¾ã›ã‚“\n" + #. translator: %s represents a digit string -#: fe-protocol3.c:878 fe-protocol3.c:897 +#: fe-protocol3.c:1035 fe-protocol3.c:1054 #, c-format msgid " at character %s" msgstr "(文字ä½ç½®: %s)" -#: fe-protocol3.c:910 +#: fe-protocol3.c:1067 #, c-format msgid "DETAIL: %s\n" msgstr "DETAIL: %s\n" -#: fe-protocol3.c:913 +#: fe-protocol3.c:1070 #, c-format msgid "HINT: %s\n" msgstr "HINT: %s\n" -#: fe-protocol3.c:916 +#: fe-protocol3.c:1073 #, c-format msgid "QUERY: %s\n" msgstr "QUERY: %s\n" -#: fe-protocol3.c:919 +#: fe-protocol3.c:1080 #, c-format msgid "CONTEXT: %s\n" msgstr "CONTEXT: %s\n" -#: fe-protocol3.c:926 +#: fe-protocol3.c:1089 #, c-format -#| msgid "CONTEXT: %s\n" msgid "SCHEMA NAME: %s\n" msgstr "SCHEMA NAME: %s\n" -#: fe-protocol3.c:930 +#: fe-protocol3.c:1093 #, c-format -#| msgid "DETAIL: %s\n" msgid "TABLE NAME: %s\n" msgstr "TABLE NAME: %s\n" -#: fe-protocol3.c:934 +#: fe-protocol3.c:1097 #, c-format -#| msgid "CONTEXT: %s\n" msgid "COLUMN NAME: %s\n" msgstr "COLUMN NAME: %s\n" -#: fe-protocol3.c:938 +#: fe-protocol3.c:1101 #, c-format msgid "DATATYPE NAME: %s\n" msgstr "DATATYPE NAME: %s\n" -#: fe-protocol3.c:942 +#: fe-protocol3.c:1105 #, c-format -#| msgid "CONTEXT: %s\n" msgid "CONSTRAINT NAME: %s\n" msgstr "CONSTRAINT NAME: %s\n" -#: fe-protocol3.c:954 +#: fe-protocol3.c:1117 msgid "LOCATION: " msgstr "LOCATION: " -#: fe-protocol3.c:956 +#: fe-protocol3.c:1119 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:958 +#: fe-protocol3.c:1121 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1182 +#: fe-protocol3.c:1316 #, c-format msgid "LINE %d: " msgstr "行 %d: " -#: fe-protocol3.c:1577 +#: fe-protocol3.c:1711 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: テキストã®COPY OUTを行ã£ã¦ã„ã¾ã›ã‚“\n" -#: fe-secure.c:266 fe-secure.c:1121 fe-secure.c:1339 -msgid "unable to acquire mutex\n" -msgstr "ミューテックスをç²å¾—ã§ãã¾ã›ã‚“\n" - -#: fe-secure.c:278 -#, c-format -msgid "could not establish SSL connection: %s\n" -msgstr "SSL接続を確立ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: fe-secure.c:387 fe-secure.c:548 fe-secure.c:1468 +#: fe-secure-openssl.c:236 fe-secure-openssl.c:345 fe-secure-openssl.c:1323 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "SSL SYSCALLエラー: %s\n" -#: fe-secure.c:394 fe-secure.c:555 fe-secure.c:1472 +#: fe-secure-openssl.c:243 fe-secure-openssl.c:352 fe-secure-openssl.c:1327 msgid "SSL SYSCALL error: EOF detected\n" msgstr "SSL SYSCALLエラー: EOFを検知\n" -#: fe-secure.c:405 fe-secure.c:566 fe-secure.c:1481 +#: fe-secure-openssl.c:254 fe-secure-openssl.c:363 fe-secure-openssl.c:1336 #, c-format msgid "SSL error: %s\n" msgstr "SSLエラー: %s\n" -#: fe-secure.c:420 fe-secure.c:581 +#: fe-secure-openssl.c:269 fe-secure-openssl.c:378 msgid "SSL connection has been closed unexpectedly\n" msgstr "SSLæŽ¥ç¶šãŒæ„図ã›ãšã«ã‚¯ãƒ­ãƒ¼ã‚ºã•れã¾ã—ãŸ\n" -#: fe-secure.c:426 fe-secure.c:587 fe-secure.c:1490 +#: fe-secure-openssl.c:275 fe-secure-openssl.c:384 fe-secure-openssl.c:1345 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "䏿˜Žã®SSLエラーコード: %d\n" -#: fe-secure.c:470 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "サーãƒã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’å—ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: fe-secure.c:659 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "サーãƒã«ãƒ‡ãƒ¼ã‚¿ã‚’é€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" +#: fe-secure-openssl.c:495 +msgid "SSL certificate's name entry is missing\n" +msgstr "SSL 証明書åé …ç›®ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" -#: fe-secure.c:779 fe-secure.c:796 -msgid "could not get server common name from server certificate\n" -msgstr "サーãƒè¨¼æ˜Žæ›¸ã‹ã‚‰ã‚µãƒ¼ãƒã®ã‚³ãƒ¢ãƒ³ãƒãƒ¼ãƒ ã‚’å–り出ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n" +#: fe-secure-openssl.c:529 +msgid "SSL certificate's name contains embedded null\n" +msgstr "SSL 証明書å項目㫠null ãŒå«ã¾ã‚Œã¦ã„ã¾ã™\n" -#: fe-secure.c:809 -msgid "SSL certificate's common name contains embedded null\n" -msgstr "SSL 証明書ã®ã‚³ãƒ¢ãƒ³ãƒãƒ¼ãƒ ã« null ãŒå«ã¾ã‚Œã¦ã„ã¾ã™\n" - -#: fe-secure.c:821 +#: fe-secure-openssl.c:580 msgid "host name must be specified for a verified SSL connection\n" msgstr "SSL 接続を検証ã™ã‚‹ãŸã‚ã«ãƒ›ã‚¹ãƒˆåを指定ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: fe-secure.c:835 +#: fe-secure-openssl.c:680 #, c-format -msgid "server common name \"%s\" does not match host name \"%s\"\n" -msgstr "サーãƒã®æ­£å¼å(common name)\"%s\"ãŒãƒ›ã‚¹ãƒˆå\"%s\"ã¨ä¸€è‡´ã—ã¾ã›ã‚“\n" +msgid "server certificate for \"%s\" does not match host name \"%s\"\n" +msgstr "\"%s\"ã®ã‚µãƒ¼ãƒè¨¼æ˜Žæ›¸ãŒãƒ›ã‚¹ãƒˆå\"%s\"ã¨ä¸€è‡´ã—ã¾ã›ã‚“\n" + +#: fe-secure-openssl.c:686 +msgid "could not get server's host name from server certificate\n" +msgstr "サーãƒè¨¼æ˜Žæ›¸ã‹ã‚‰ã‚µãƒ¼ãƒã®ãƒ›ã‚¹ãƒˆåã‚’å–り出ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n" -#: fe-secure.c:970 +#: fe-secure-openssl.c:930 #, c-format msgid "could not create SSL context: %s\n" msgstr "SSLコンテキストを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-secure.c:1093 +#: fe-secure-openssl.c:967 +#, c-format +msgid "could not read root certificate file \"%s\": %s\n" +msgstr "ルート証明書\"%s\"を読ã¿å–れã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: fe-secure-openssl.c:995 +#, c-format +msgid "SSL library does not support CRL certificates (file \"%s\")\n" +msgstr "SSLライブラリãŒCRL証明書(\"%s\")をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ\n" + +#: fe-secure-openssl.c:1023 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"ルート証明書ファイルを置ããŸã‚ã®ãƒ›ãƒ¼ãƒ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒå­˜åœ¨ã—ã¾ã›ã‚“。\n" +"ファイルを用æ„ã™ã‚‹ã‹ã€ã‚µãƒ¼ãƒè¨¼æ˜Žæ›¸ã®æ¤œè¨¼ã‚’無効ã«ã™ã‚‹ã‚ˆã†ã« sslmode を変更ã—ã¦ãã ã•ã„\n" + +#: fe-secure-openssl.c:1027 +#, c-format +msgid "" +"root certificate file \"%s\" does not exist\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"ルート証明書ファイル\"%s\"ãŒå­˜åœ¨ã—ã¾ã›ã‚“。\n" +"ファイルを用æ„ã™ã‚‹ã‹ã‚µãƒ¼ãƒè¨¼æ˜Žæ›¸ã®æ¤œè¨¼ã‚’無効ã«ã™ã‚‹ã‚ˆã†ã«sslmodeを変更ã—ã¦ãã ã•ã„\n" + +#: fe-secure-openssl.c:1058 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "証明書ファイル\"%s\"をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-secure.c:1130 fe-secure.c:1145 +#: fe-secure-openssl.c:1077 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "証明書ファイル\"%s\"を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-secure.c:1200 +#: fe-secure-openssl.c:1101 +#, c-format +msgid "could not establish SSL connection: %s\n" +msgstr "SSL接続を確立ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: fe-secure-openssl.c:1155 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "SSLエンジン\"%s\"を読ã¿è¾¼ã¿ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-secure.c:1212 +#: fe-secure-openssl.c:1167 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "SSLエンジン\"%s\"ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-secure.c:1228 +#: fe-secure-openssl.c:1183 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "SSL秘密キーファイル\"%s\"をエンジン\"%s\"ã‹ã‚‰èª­ã¿å–れã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-secure.c:1242 +#: fe-secure-openssl.c:1197 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "SSL秘密キー\"%s\"をエンジン\"%s\"ã‹ã‚‰èª­ã¿å–れã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-secure.c:1279 +#: fe-secure-openssl.c:1234 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "証明書ã¯ã‚りã¾ã—ãŸãŒã€ç§˜å¯†ã‚­ãƒ¼ãƒ•ァイル\"%s\"ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: fe-secure.c:1287 +#: fe-secure-openssl.c:1242 #, c-format msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "警告:秘密キーファイル \"%s\" ãŒã‚°ãƒ«ãƒ¼ãƒ—メンãƒã‚„第三者ã‹ã‚‰èª­ã‚る状態ã«ãªã£ã¦ã„ã¾ã™ã€‚ã“ã®æ¨©é™ã¯u=rw (0600)ã¾ãŸã¯ãれ以下ã¨ã™ã¹ãã§ã™\n" -#: fe-secure.c:1298 +#: fe-secure-openssl.c:1253 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "秘密キーファイル\"%s\"をロードã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-secure.c:1312 +#: fe-secure-openssl.c:1267 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "証明書ã¨ç§˜å¯†ã‚­ãƒ¼ãƒ•ァイル\"%s\"ãŒä¸€è‡´ã—ã¾ã›ã‚“: %s\n" -#: fe-secure.c:1348 -#, c-format -msgid "could not read root certificate file \"%s\": %s\n" -msgstr "ルート証明書\"%s\"を読ã¿å–れã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: fe-secure.c:1378 -#, c-format -msgid "SSL library does not support CRL certificates (file \"%s\")\n" -msgstr "SSLライブラリãŒCRL証明書(\"%s\")をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ\n" - -#: fe-secure.c:1411 -msgid "" -"could not get home directory to locate root certificate file\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" -msgstr "" -"ルート証明書ファイルを置ããŸã‚ã®ãƒ›ãƒ¼ãƒ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒå­˜åœ¨ã—ã¾ã›ã‚“。\n" -"ファイルを用æ„ã™ã‚‹ã‹ã€ã‚µãƒ¼ãƒè¨¼æ˜Žæ›¸ã®æ¤œè¨¼ã‚’無効ã«ã™ã‚‹ã‚ˆã†ã« sslmode を変更ã—ã¦ãã ã•ã„\n" - -#: fe-secure.c:1415 -#, c-format -msgid "" -"root certificate file \"%s\" does not exist\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" -msgstr "" -"ルート証明書ファイル\"%s\"ãŒå­˜åœ¨ã—ã¾ã›ã‚“。\n" -"ファイルを用æ„ã™ã‚‹ã‹ã‚µãƒ¼ãƒè¨¼æ˜Žæ›¸ã®æ¤œè¨¼ã‚’無効ã«ã™ã‚‹ã‚ˆã†ã«sslmodeを変更ã—ã¦ãã ã•ã„\n" - -#: fe-secure.c:1509 +#: fe-secure-openssl.c:1366 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "証明書を入手ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: fe-secure.c:1586 +#: fe-secure-openssl.c:1458 #, c-format msgid "no SSL error reported" msgstr "SSLエラーã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ" -#: fe-secure.c:1595 +#: fe-secure-openssl.c:1467 #, c-format msgid "SSL error code %lu" msgstr "SSLエラーコード: %lu" -#: win32.c:322 +#: fe-secure.c:261 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "サーãƒã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’å—ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: fe-secure.c:369 +#, c-format +msgid "could not send data to server: %s\n" +msgstr "サーãƒã«ãƒ‡ãƒ¼ã‚¿ã‚’é€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: win32.c:317 #, c-format msgid "unrecognized socket error: 0x%08X/%d" msgstr "䏿˜Žãªã‚½ã‚±ãƒƒãƒˆã‚¨ãƒ©ãƒ¼ 0x%08X/%d" -#~ msgid "verified SSL connections are only supported when connecting to a host name\n" -#~ msgstr "検証ã•れãŸSSL接続ã¯ãƒ›ã‚¹ãƒˆåã¸ã®æŽ¥ç¶šæ™‚ã®ã¿ã‚µãƒãƒ¼ãƒˆã•れã¾ã™\n" diff --git a/src/interfaces/libpq/po/pt_BR.po b/src/interfaces/libpq/po/pt_BR.po index f43dc01db4..26f2de317d 100644 --- a/src/interfaces/libpq/po/pt_BR.po +++ b/src/interfaces/libpq/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:45-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -22,7 +22,7 @@ msgstr "" msgid "GSSAPI continuation error" msgstr "erro ao continuar autenticação GSSAPI" -#: fe-auth.c:177 fe-auth.c:412 +#: fe-auth.c:177 fe-auth.c:417 msgid "host name must be specified\n" msgstr "nome da máquina deve ser especificado\n" @@ -30,14 +30,15 @@ msgstr "nome da máquina deve ser especificado\n" msgid "duplicate GSS authentication request\n" msgstr "pedido de autenticação GSS duplicado\n" -#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:383 fe-auth.c:418 fe-auth.c:514 -#: fe-auth.c:780 fe-connect.c:707 fe-connect.c:904 fe-connect.c:1080 -#: fe-connect.c:2091 fe-connect.c:3484 fe-connect.c:3736 fe-connect.c:3855 -#: fe-connect.c:4095 fe-connect.c:4175 fe-connect.c:4274 fe-connect.c:4530 -#: fe-connect.c:4559 fe-connect.c:4631 fe-connect.c:4649 fe-connect.c:4745 -#: fe-connect.c:5079 fe-connect.c:5229 fe-exec.c:2651 fe-exec.c:3398 -#: fe-exec.c:3563 fe-lobj.c:896 fe-protocol2.c:1206 fe-protocol3.c:992 -#: fe-protocol3.c:1678 fe-secure-openssl.c:552 fe-secure-openssl.c:1094 +#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:388 fe-auth.c:423 fe-auth.c:519 +#: fe-auth.c:798 fe-connect.c:767 fe-connect.c:964 fe-connect.c:1140 +#: fe-connect.c:2141 fe-connect.c:3499 fe-connect.c:3751 fe-connect.c:3870 +#: fe-connect.c:4110 fe-connect.c:4190 fe-connect.c:4289 fe-connect.c:4545 +#: fe-connect.c:4574 fe-connect.c:4646 fe-connect.c:4670 fe-connect.c:4688 +#: fe-connect.c:4784 fe-connect.c:5118 fe-connect.c:5268 fe-exec.c:2651 +#: fe-exec.c:3398 fe-exec.c:3563 fe-lobj.c:896 fe-protocol2.c:1206 +#: fe-protocol3.c:992 fe-protocol3.c:1678 fe-secure-openssl.c:515 +#: fe-secure-openssl.c:1139 msgid "out of memory\n" msgstr "sem memória\n" @@ -49,70 +50,78 @@ msgstr "erro de importação de nome GSSAPI" msgid "SSPI continuation error" msgstr "erro ao continuar autenticação SSPI" -#: fe-auth.c:398 +#: fe-auth.c:378 +msgid "duplicate SSPI authentication request\n" +msgstr "pedido de autenticação SSPI duplicado\n" + +#: fe-auth.c:403 msgid "could not acquire SSPI credentials" msgstr "não pôde obter credenciais SSPI" -#: fe-auth.c:489 +#: fe-auth.c:494 msgid "SCM_CRED authentication method not supported\n" msgstr "método de autenticação SCM_CRED não é suportado\n" -#: fe-auth.c:565 +#: fe-auth.c:570 msgid "Kerberos 4 authentication not supported\n" msgstr "Autenticação Kerberos 4 não é suportada\n" -#: fe-auth.c:570 +#: fe-auth.c:575 msgid "Kerberos 5 authentication not supported\n" msgstr "Autenticação Kerberos 5 não é suportada\n" -#: fe-auth.c:641 +#: fe-auth.c:646 msgid "GSSAPI authentication not supported\n" msgstr "Autenticação GSSAPI não é suportada\n" -#: fe-auth.c:673 +#: fe-auth.c:678 msgid "SSPI authentication not supported\n" msgstr "Autenticação SSPI não é suportada\n" -#: fe-auth.c:681 +#: fe-auth.c:686 msgid "Crypt authentication not supported\n" msgstr "Autenticação crypt não é suportada\n" -#: fe-auth.c:708 +#: fe-auth.c:721 +msgid "SCRAM authentication requires libpq version 10 or above\n" +msgstr "autenticação SCRAM requer libpq com versão 10 ou superior\n" + +#: fe-auth.c:726 #, c-format msgid "authentication method %u not supported\n" msgstr "método de autenticação %u não é suportado\n" -#: fe-auth.c:755 +#: fe-auth.c:773 #, c-format msgid "user name lookup failure: error code %lu\n" msgstr "falhou ao pesquisar nome de usuário: código de erro %lu\n" -#: fe-auth.c:765 fe-connect.c:2018 +#: fe-auth.c:783 fe-connect.c:2068 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "não pôde encontrar ID de usuário local %d: %s\n" -#: fe-auth.c:770 fe-connect.c:2023 +#: fe-auth.c:788 fe-connect.c:2073 #, c-format msgid "local user with ID %d does not exist\n" msgstr "usuário local com ID %d não existe\n" -#: fe-connect.c:846 +#: fe-connect.c:906 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "valor do modo ssl desconhecido: \"%s\"\n" -#: fe-connect.c:867 +#: fe-connect.c:927 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "valor \"%s\" do modo ssl é inválido quando suporte a SSL não foi compilado\n" -#: fe-connect.c:1104 +#: fe-connect.c:1164 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "não pôde configurar o soquete para modo TCP sem atraso: %s\n" -#: fe-connect.c:1134 +#: fe-connect.c:1194 #, c-format msgid "" "could not connect to server: %s\n" @@ -123,7 +132,7 @@ msgstr "" "\tO servidor está executando localmente e aceitando\n" "\tconexões no soquete de domínio Unix \"%s\"?\n" -#: fe-connect.c:1189 +#: fe-connect.c:1249 #, c-format msgid "" "could not connect to server: %s\n" @@ -134,7 +143,7 @@ msgstr "" "\tO servidor está executando na máquina \"%s\" (%s) e aceitando\n" "\tconexões TCP/IP na porta %s?\n" -#: fe-connect.c:1198 +#: fe-connect.c:1258 #, c-format msgid "" "could not connect to server: %s\n" @@ -145,300 +154,280 @@ msgstr "" "\tO servidor está executando na máquina \"%s\" e aceitando\n" "\tconexões TCP/IP na porta %s?\n" -#: fe-connect.c:1249 -#, c-format -msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" -msgstr "setsockopt(TCP_KEEPIDLE) falhou: %s\n" - -#: fe-connect.c:1262 -#, c-format -msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" -msgstr "setsockopt(TCP_KEEPALIVE) falhou: %s\n" - -#: fe-connect.c:1294 +#: fe-connect.c:1309 fe-connect.c:1341 fe-connect.c:1374 fe-connect.c:1841 #, c-format -msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" -msgstr "setsockopt(TCP_KEEPINTVL) falhou: %s\n" +msgid "setsockopt(%s) failed: %s\n" +msgstr "setsockopt(%s) falhou: %s\n" -#: fe-connect.c:1326 -#, c-format -msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" -msgstr "setsockopt(TCP_KEEPCNT) falhou: %s\n" - -#: fe-connect.c:1374 +#: fe-connect.c:1423 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) falhou: %ui\n" -#: fe-connect.c:1426 +#: fe-connect.c:1475 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "número de porta inválido: \"%s\"\n" -#: fe-connect.c:1459 +#: fe-connect.c:1508 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "caminho do soquete de domínio Unix \"%s\" é muito longo (máximo de %d bytes)\n" -#: fe-connect.c:1478 +#: fe-connect.c:1527 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "não pôde traduzir nome da máquina \"%s\" para endereço: %s\n" -#: fe-connect.c:1482 +#: fe-connect.c:1531 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "não pôde traduzir caminho do soquete de domínio Unix \"%s\" para endereço: %s\n" -#: fe-connect.c:1687 +#: fe-connect.c:1736 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "estado de conexão é inválido, provavelmente indicativo de corrupção de memória\n" -#: fe-connect.c:1727 +#: fe-connect.c:1776 #, c-format msgid "could not create socket: %s\n" msgstr "não pôde criar soquete: %s\n" -#: fe-connect.c:1749 +#: fe-connect.c:1798 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "não pôde configurar o soquete para modo não bloqueado: %s\n" -#: fe-connect.c:1760 +#: fe-connect.c:1809 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "não pôde configurar o soquete para modo fechar-após-execução: %s\n" -#: fe-connect.c:1779 +#: fe-connect.c:1828 msgid "keepalives parameter must be an integer\n" msgstr "parâmetro keepalives deve ser um inteiro\n" -#: fe-connect.c:1792 -#, c-format -msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" -msgstr "setsockopt(SO_KEEPALIVE) falhou: %s\n" - -#: fe-connect.c:1929 +#: fe-connect.c:1979 #, c-format msgid "could not get socket error status: %s\n" msgstr "não pôde obter status de erro do soquete: %s\n" -#: fe-connect.c:1963 +#: fe-connect.c:2013 #, c-format msgid "could not get client address from socket: %s\n" msgstr "não pôde obter do soquete o endereço do cliente: %s\n" -#: fe-connect.c:2005 +#: fe-connect.c:2055 msgid "requirepeer parameter is not supported on this platform\n" msgstr "parâmetro requirepeer não é suportado nessa plataforma\n" -#: fe-connect.c:2008 +#: fe-connect.c:2058 #, c-format msgid "could not get peer credentials: %s\n" msgstr "não pôde receber credenciais: %s\n" -#: fe-connect.c:2031 +#: fe-connect.c:2081 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "requirepeer especificou \"%s\", mas nome de usuário atual é \"%s\"\n" -#: fe-connect.c:2065 +#: fe-connect.c:2115 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "não pôde mandar pacote de negociação SSL: %s\n" -#: fe-connect.c:2104 +#: fe-connect.c:2154 #, c-format msgid "could not send startup packet: %s\n" msgstr "não pôde enviar pacote de inicialização: %s\n" -#: fe-connect.c:2174 +#: fe-connect.c:2224 msgid "server does not support SSL, but SSL was required\n" msgstr "servidor não suporta SSL, mas SSL foi requerido\n" -#: fe-connect.c:2200 +#: fe-connect.c:2250 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "a negociação SSL recebeu uma resposta inválida: %c\n" -#: fe-connect.c:2275 fe-connect.c:2308 +#: fe-connect.c:2325 fe-connect.c:2358 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "pedido de autenticação esperado do servidor, mas foi recebido %c\n" -#: fe-connect.c:2475 +#: fe-connect.c:2525 #, c-format msgid "out of memory allocating GSSAPI buffer (%d)" msgstr "sem memória para alocar buffer para GSSAPI (%d)" -#: fe-connect.c:2560 +#: fe-connect.c:2610 msgid "unexpected message from server during startup\n" msgstr "mensagem inesperada do servidor durante inicialização\n" -#: fe-connect.c:2654 +#: fe-connect.c:2704 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "estado de conexão %d é inválido, provavelmente indicativo de corrupção de memória\n" -#: fe-connect.c:3090 fe-connect.c:3150 +#: fe-connect.c:3105 fe-connect.c:3165 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc \"%s\" falhou durante evento PGEVT_CONNRESET\n" -#: fe-connect.c:3497 +#: fe-connect.c:3512 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "URL LDAP \"%s\" é inválida: esquema deve ser ldap://\n" -#: fe-connect.c:3512 +#: fe-connect.c:3527 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "URL LDAP \"%s\" é inválida: faltando nome distinto\n" -#: fe-connect.c:3523 fe-connect.c:3576 +#: fe-connect.c:3538 fe-connect.c:3591 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "URL LDAP \"%s\" é inválida: deve ter exatamente um atributo\n" -#: fe-connect.c:3533 fe-connect.c:3590 +#: fe-connect.c:3548 fe-connect.c:3605 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "URL LDAP \"%s\" é inválida: deve ter escopo de busca (base/one/sub)\n" -#: fe-connect.c:3544 +#: fe-connect.c:3559 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "URL LDAP \"%s\" é inválida: nenhum filtro\n" -#: fe-connect.c:3565 +#: fe-connect.c:3580 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "URL LDAP \"%s\" é inválida: número de porta é inválido\n" -#: fe-connect.c:3599 +#: fe-connect.c:3614 msgid "could not create LDAP structure\n" msgstr "não pôde criar estrutura LDAP\n" -#: fe-connect.c:3675 +#: fe-connect.c:3690 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "busca em servidor LDAP falhou: %s\n" -#: fe-connect.c:3686 +#: fe-connect.c:3701 msgid "more than one entry found on LDAP lookup\n" msgstr "mais de um registro encontrado na busca no LDAP\n" -#: fe-connect.c:3687 fe-connect.c:3699 +#: fe-connect.c:3702 fe-connect.c:3714 msgid "no entry found on LDAP lookup\n" msgstr "nenhum registro encontrado na busca no LDAP\n" -#: fe-connect.c:3710 fe-connect.c:3723 +#: fe-connect.c:3725 fe-connect.c:3738 msgid "attribute has no values on LDAP lookup\n" msgstr "atributo não tem valores na busca no LDAP\n" -#: fe-connect.c:3775 fe-connect.c:3794 fe-connect.c:4313 +#: fe-connect.c:3790 fe-connect.c:3809 fe-connect.c:4328 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "faltando \"=\" depois de \"%s\" na cadeia de caracteres de conexão\n" -#: fe-connect.c:3867 fe-connect.c:4498 fe-connect.c:5212 +#: fe-connect.c:3882 fe-connect.c:4513 fe-connect.c:5251 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "opção de conexão \"%s\" é inválida\n" -#: fe-connect.c:3883 fe-connect.c:4362 +#: fe-connect.c:3898 fe-connect.c:4377 msgid "unterminated quoted string in connection info string\n" msgstr "cadeia de caracteres entre aspas não foi terminada na cadeia de caracteres de conexão\n" -#: fe-connect.c:3923 +#: fe-connect.c:3938 msgid "could not get home directory to locate service definition file" msgstr "não pôde obter diretório base do usuário para localizar arquivo de definição de serviço" -#: fe-connect.c:3956 +#: fe-connect.c:3971 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "definição de serviço \"%s\" não foi encontrado\n" -#: fe-connect.c:3979 +#: fe-connect.c:3994 #, c-format msgid "service file \"%s\" not found\n" msgstr "arquivo de serviço \"%s\" não foi encontrado\n" -#: fe-connect.c:3992 +#: fe-connect.c:4007 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "linha %d é muito longa no arquivo de serviço \"%s\"\n" -#: fe-connect.c:4063 fe-connect.c:4107 +#: fe-connect.c:4078 fe-connect.c:4122 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "erro de sintaxe no arquivo de serviço \"%s\", linha %d\n" -#: fe-connect.c:4074 +#: fe-connect.c:4089 #, c-format msgid "nested service specifications not supported in service file \"%s\", line %d\n" msgstr "especificações de serviço aninhadas não são suportadas no arquivo de serviço \"%s\", linha %d\n" -#: fe-connect.c:4756 +#: fe-connect.c:4795 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "URI inválida propagada para rotina interna do analisador: \"%s\"\n" -#: fe-connect.c:4826 +#: fe-connect.c:4865 #, c-format msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" msgstr "fim da cadeia de caracteres atingido quando procurava por \"]\" no endereço IPv6 na URI: \"%s\"\n" -#: fe-connect.c:4833 +#: fe-connect.c:4872 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "endereço IPv6 não pode ser vazio na URI: \"%s\"\n" -#: fe-connect.c:4848 +#: fe-connect.c:4887 #, c-format msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" msgstr "caracter \"%c\" inesperado na posição %d na URI (esperado \":\" ou \"/\"): \"%s\"\n" -#: fe-connect.c:4962 +#: fe-connect.c:5001 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "separador de chave/valor \"=\" extra no parâmetro da URI: \"%s\"\n" -#: fe-connect.c:4982 +#: fe-connect.c:5021 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "faltando separador de chave/valor \"=\" no parâmetro da URI: \"%s\"\n" -#: fe-connect.c:5033 +#: fe-connect.c:5072 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "parâmetro da URI é inválido: \"%s\"\n" -#: fe-connect.c:5107 +#: fe-connect.c:5146 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "elemento escapado com porcentagem é inválido: \"%s\"\n" -#: fe-connect.c:5117 +#: fe-connect.c:5156 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "valor %%00 proibido em valor escapado com porcentagem: \"%s\"\n" -#: fe-connect.c:5451 +#: fe-connect.c:5490 msgid "connection pointer is NULL\n" msgstr "ponteiro da conexão é NULO\n" -#: fe-connect.c:5749 +#: fe-connect.c:5788 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "AVISO: arquivo de senhas \"%s\" não é um arquivo no formato texto\n" -#: fe-connect.c:5758 +#: fe-connect.c:5797 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "AVISO: arquivo de senhas \"%s\" tem acesso de leitura para outros ou grupo; permissões devem ser u=rw (0600) ou menos que isso\n" -#: fe-connect.c:5864 +#: fe-connect.c:5911 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "senha obtida do arquivo \"%s\"\n" @@ -447,27 +436,27 @@ msgstr "senha obtida do arquivo \"%s\"\n" msgid "NOTICE" msgstr "NOTA" -#: fe-exec.c:1140 fe-exec.c:1198 fe-exec.c:1244 +#: fe-exec.c:1141 fe-exec.c:1199 fe-exec.c:1245 msgid "command string is a null pointer\n" msgstr "cadeia de caracteres do comando é um ponteiro nulo\n" -#: fe-exec.c:1204 fe-exec.c:1250 fe-exec.c:1345 +#: fe-exec.c:1205 fe-exec.c:1251 fe-exec.c:1346 msgid "number of parameters must be between 0 and 65535\n" msgstr "número de parâmetros deve ser entre 0 e 65535\n" -#: fe-exec.c:1238 fe-exec.c:1339 +#: fe-exec.c:1239 fe-exec.c:1340 msgid "statement name is a null pointer\n" msgstr "nome do comando é um ponteiro nulo\n" -#: fe-exec.c:1258 fe-exec.c:1422 fe-exec.c:2140 fe-exec.c:2339 +#: fe-exec.c:1259 fe-exec.c:1422 fe-exec.c:2140 fe-exec.c:2339 msgid "function requires at least protocol version 3.0\n" msgstr "função requer pelo menos a versão 3.0 do protocolo\n" -#: fe-exec.c:1376 +#: fe-exec.c:1377 msgid "no connection to the server\n" msgstr "sem conexão ao servidor\n" -#: fe-exec.c:1383 +#: fe-exec.c:1384 msgid "another command is already in progress\n" msgstr "outro comando já está em execução\n" @@ -639,7 +628,7 @@ msgstr "inteiro de tamanho %lu não é suportado por pqPutInt" msgid "connection not open\n" msgstr "conexão não está aberta\n" -#: fe-misc.c:812 fe-secure-openssl.c:271 fe-secure-openssl.c:380 +#: fe-misc.c:812 fe-secure-openssl.c:231 fe-secure-openssl.c:340 #: fe-secure.c:253 fe-secure.c:362 msgid "" "server closed the connection unexpectedly\n" @@ -839,153 +828,148 @@ msgstr "LINHA %d: " msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: não está fazendo COPY OUT de texto\n" -#: fe-secure-openssl.c:146 fe-secure-openssl.c:1031 fe-secure-openssl.c:1251 -#, c-format -msgid "could not acquire mutex: %s\n" -msgstr "não pôde obter mutex: %s\n" - -#: fe-secure-openssl.c:158 -#, c-format -msgid "could not establish SSL connection: %s\n" -msgstr "não pôde estabelecer conexão SSL: %s\n" - -#: fe-secure-openssl.c:276 fe-secure-openssl.c:385 fe-secure-openssl.c:1377 +#: fe-secure-openssl.c:236 fe-secure-openssl.c:345 fe-secure-openssl.c:1323 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "Erro de SYSCALL SSL: %s\n" -#: fe-secure-openssl.c:283 fe-secure-openssl.c:392 fe-secure-openssl.c:1381 +#: fe-secure-openssl.c:243 fe-secure-openssl.c:352 fe-secure-openssl.c:1327 msgid "SSL SYSCALL error: EOF detected\n" msgstr "Erro de SYSCALL SSL: EOF detectado\n" -#: fe-secure-openssl.c:294 fe-secure-openssl.c:403 fe-secure-openssl.c:1390 +#: fe-secure-openssl.c:254 fe-secure-openssl.c:363 fe-secure-openssl.c:1336 #, c-format msgid "SSL error: %s\n" msgstr "Erro de SSL: %s\n" -#: fe-secure-openssl.c:309 fe-secure-openssl.c:418 +#: fe-secure-openssl.c:269 fe-secure-openssl.c:378 msgid "SSL connection has been closed unexpectedly\n" msgstr "conexão SSL foi fechada inesperadamente\n" -#: fe-secure-openssl.c:315 fe-secure-openssl.c:424 fe-secure-openssl.c:1399 +#: fe-secure-openssl.c:275 fe-secure-openssl.c:384 fe-secure-openssl.c:1345 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "código de erro SSL desconhecido: %d\n" -#: fe-secure-openssl.c:536 +#: fe-secure-openssl.c:495 msgid "SSL certificate's name entry is missing\n" msgstr "entrada do nome do certificado SSL está ausente\n" -#: fe-secure-openssl.c:566 +#: fe-secure-openssl.c:529 msgid "SSL certificate's name contains embedded null\n" msgstr "nome do certificado SSL contém nulo embutido\n" -#: fe-secure-openssl.c:617 +#: fe-secure-openssl.c:580 msgid "host name must be specified for a verified SSL connection\n" msgstr "nome da máquina deve ser especificado para uma conexão SSL verificada\n" -#: fe-secure-openssl.c:717 +#: fe-secure-openssl.c:680 #, c-format msgid "server certificate for \"%s\" does not match host name \"%s\"\n" msgstr "certificado do servidor para \"%s\" não corresponde ao nome da máquina \"%s\"\n" -#: fe-secure-openssl.c:723 +#: fe-secure-openssl.c:686 msgid "could not get server's host name from server certificate\n" msgstr "não pôde obter nome de máquina do servidor a partir do certificado do servidor\n" -#: fe-secure-openssl.c:870 +#: fe-secure-openssl.c:930 #, c-format msgid "could not create SSL context: %s\n" msgstr "não pôde criar contexto SSL: %s\n" -#: fe-secure-openssl.c:1001 +#: fe-secure-openssl.c:967 +#, c-format +msgid "could not read root certificate file \"%s\": %s\n" +msgstr "não pôde ler certificado raiz \"%s\": %s\n" + +#: fe-secure-openssl.c:995 +#, c-format +msgid "SSL library does not support CRL certificates (file \"%s\")\n" +msgstr "biblioteca SSL não suporta certificados CRL (arquivo \"%s\")\n" + +#: fe-secure-openssl.c:1023 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"não pôde obter diretório base do usuário para localizar arquivo do certificado\n" +"Forneça um arquivo ou mude o sslmode para desabilitar a verificação de certificado do servidor.\n" + +#: fe-secure-openssl.c:1027 +#, c-format +msgid "" +"root certificate file \"%s\" does not exist\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"certificado raiz \"%s\" não existe\n" +"Forneça um arquivo ou mude o sslmode para desabilitar a verificação de certificado do servidor.\n" + +#: fe-secure-openssl.c:1058 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "não pôde abrir certificado \"%s\": %s\n" -#: fe-secure-openssl.c:1040 fe-secure-openssl.c:1055 +#: fe-secure-openssl.c:1077 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "não pôde ler certificado \"%s\": %s\n" -#: fe-secure-openssl.c:1110 +#: fe-secure-openssl.c:1101 +#, c-format +msgid "could not establish SSL connection: %s\n" +msgstr "não pôde estabelecer conexão SSL: %s\n" + +#: fe-secure-openssl.c:1155 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "não pôde carregar mecanismo SSL \"%s\": %s\n" -#: fe-secure-openssl.c:1122 +#: fe-secure-openssl.c:1167 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "não pôde inicializar mecanismo SSL \"%s\": %s\n" -#: fe-secure-openssl.c:1138 +#: fe-secure-openssl.c:1183 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "não pôde ler chave privada SSL \"%s\" do mecanismo \"%s\": %s\n" -#: fe-secure-openssl.c:1152 +#: fe-secure-openssl.c:1197 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "não pôde carregar chave privada SSL \"%s\" do mecanismo \"%s\": %s\n" -#: fe-secure-openssl.c:1189 +#: fe-secure-openssl.c:1234 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "certificado presente, mas não a chave privada \"%s\"\n" -#: fe-secure-openssl.c:1197 +#: fe-secure-openssl.c:1242 #, c-format msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "chave privada \"%s\" tem acesso de leitura para outros ou grupo; permissões devem ser u=rw (0600) ou menos que isso\n" -#: fe-secure-openssl.c:1208 +#: fe-secure-openssl.c:1253 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "não pôde carregar arquivo contendo chave privada \"%s\": %s\n" -#: fe-secure-openssl.c:1222 +#: fe-secure-openssl.c:1267 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "certificado não corresponde a chave privada \"%s\": %s\n" -#: fe-secure-openssl.c:1260 -#, c-format -msgid "could not read root certificate file \"%s\": %s\n" -msgstr "não pôde ler certificado raiz \"%s\": %s\n" - -#: fe-secure-openssl.c:1290 -#, c-format -msgid "SSL library does not support CRL certificates (file \"%s\")\n" -msgstr "biblioteca SSL não suporta certificados CRL (arquivo \"%s\")\n" - -#: fe-secure-openssl.c:1323 -msgid "" -"could not get home directory to locate root certificate file\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" -msgstr "" -"não pôde obter diretório base do usuário para localizar arquivo do certificado\n" -"Forneça um arquivo ou mude o sslmode para desabilitar a verificação de certificado do servidor.\n" - -#: fe-secure-openssl.c:1327 -#, c-format -msgid "" -"root certificate file \"%s\" does not exist\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" -msgstr "" -"certificado raiz \"%s\" não existe\n" -"Forneça um arquivo ou mude o sslmode para desabilitar a verificação de certificado do servidor.\n" - -#: fe-secure-openssl.c:1420 +#: fe-secure-openssl.c:1366 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "certificado não pôde ser obtido: %s\n" -#: fe-secure-openssl.c:1512 +#: fe-secure-openssl.c:1458 #, c-format msgid "no SSL error reported" msgstr "nenhum erro SSL relatado" -#: fe-secure-openssl.c:1521 +#: fe-secure-openssl.c:1467 #, c-format msgid "SSL error code %lu" msgstr "código de erro SSL %lu" diff --git a/src/interfaces/libpq/po/ru.po b/src/interfaces/libpq/po/ru.po index bf7e248dec..2935cad7f0 100644 --- a/src/interfaces/libpq/po/ru.po +++ b/src/interfaces/libpq/po/ru.po @@ -4,15 +4,14 @@ # Serguei A. Mokhov , 2001-2004. # Oleg Bartunov , 2005. # Andrey Sudnik , 2010. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: libpq (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-11-23 19:08+0000\n" -"PO-Revision-Date: 2016-09-20 12:00+0300\n" -"Last-Translator: Alexander Lakhin \n" +"POT-Creation-Date: 2017-08-17 17:47+0000\n" +"PO-Revision-Date: 2017-08-20 13:57+0300\n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" @@ -20,12 +19,13 @@ 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" #: fe-auth.c:148 msgid "GSSAPI continuation error" msgstr "ошибка Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð² GSSAPI" -#: fe-auth.c:177 fe-auth.c:412 +#: fe-auth.c:177 fe-auth.c:417 msgid "host name must be specified\n" msgstr "требуетÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ Ð¸Ð¼Ñ Ñервера\n" @@ -33,14 +33,15 @@ msgstr "требуетÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ Ð¸Ð¼Ñ Ñервера\n" msgid "duplicate GSS authentication request\n" msgstr "повторный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ GSS\n" -#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:383 fe-auth.c:418 fe-auth.c:514 -#: fe-auth.c:780 fe-connect.c:707 fe-connect.c:904 fe-connect.c:1080 -#: fe-connect.c:2091 fe-connect.c:3484 fe-connect.c:3736 fe-connect.c:3855 -#: fe-connect.c:4095 fe-connect.c:4175 fe-connect.c:4274 fe-connect.c:4530 -#: fe-connect.c:4559 fe-connect.c:4631 fe-connect.c:4649 fe-connect.c:4745 -#: fe-connect.c:5079 fe-connect.c:5229 fe-exec.c:2651 fe-exec.c:3398 -#: fe-exec.c:3563 fe-lobj.c:896 fe-protocol2.c:1206 fe-protocol3.c:992 -#: fe-protocol3.c:1678 fe-secure-openssl.c:515 fe-secure-openssl.c:1139 +#: fe-auth.c:197 fe-auth.c:309 fe-auth.c:388 fe-auth.c:423 fe-auth.c:519 +#: fe-auth.c:798 fe-connect.c:767 fe-connect.c:964 fe-connect.c:1140 +#: fe-connect.c:2141 fe-connect.c:3499 fe-connect.c:3751 fe-connect.c:3870 +#: fe-connect.c:4110 fe-connect.c:4190 fe-connect.c:4289 fe-connect.c:4545 +#: fe-connect.c:4574 fe-connect.c:4646 fe-connect.c:4670 fe-connect.c:4688 +#: fe-connect.c:4784 fe-connect.c:5118 fe-connect.c:5268 fe-exec.c:2651 +#: fe-exec.c:3398 fe-exec.c:3563 fe-lobj.c:896 fe-protocol2.c:1206 +#: fe-protocol3.c:992 fe-protocol3.c:1678 fe-secure-openssl.c:515 +#: fe-secure-openssl.c:1139 msgid "out of memory\n" msgstr "нехватка памÑти\n" @@ -52,70 +53,78 @@ msgstr "ошибка импорта имени в GSSAPI" msgid "SSPI continuation error" msgstr "ошибка Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð² SSPI" -#: fe-auth.c:398 +#: fe-auth.c:378 +msgid "duplicate SSPI authentication request\n" +msgstr "повторный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ SSPI\n" + +#: fe-auth.c:403 msgid "could not acquire SSPI credentials" msgstr "не удалоÑÑŒ получить удоÑтоверение SSPI" -#: fe-auth.c:489 +#: fe-auth.c:494 msgid "SCM_CRED authentication method not supported\n" msgstr "Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ SCM_CRED не поддерживаетÑÑ\n" -#: fe-auth.c:565 +#: fe-auth.c:570 msgid "Kerberos 4 authentication not supported\n" msgstr "Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Kerberos 4 не поддерживаетÑÑ\n" -#: fe-auth.c:570 +#: fe-auth.c:575 msgid "Kerberos 5 authentication not supported\n" msgstr "Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Kerberos 5 не поддерживаетÑÑ\n" -#: fe-auth.c:641 +#: fe-auth.c:646 msgid "GSSAPI authentication not supported\n" msgstr "Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· GSSAPI не поддерживаетÑÑ\n" -#: fe-auth.c:673 +#: fe-auth.c:678 msgid "SSPI authentication not supported\n" msgstr "Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· SSPI не поддерживаетÑÑ\n" -#: fe-auth.c:681 +#: fe-auth.c:686 msgid "Crypt authentication not supported\n" msgstr "Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Crypt не поддерживаетÑÑ\n" -#: fe-auth.c:708 +#: fe-auth.c:721 +msgid "SCRAM authentication requires libpq version 10 or above\n" +msgstr "Ð´Ð»Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ SCRAM требуетÑÑ libpq верÑии 10 или новее\n" + +#: fe-auth.c:726 #, c-format msgid "authentication method %u not supported\n" msgstr "метод аутентификации %u не поддерживаетÑÑ\n" -#: fe-auth.c:755 +#: fe-auth.c:773 #, c-format msgid "user name lookup failure: error code %lu\n" msgstr "раÑпознать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ удалоÑÑŒ (код ошибки: %lu)\n" -#: fe-auth.c:765 fe-connect.c:2018 +#: fe-auth.c:783 fe-connect.c:2068 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "найти локального Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾ идентификатору (%d) не удалоÑÑŒ: %s\n" -#: fe-auth.c:770 fe-connect.c:2023 +#: fe-auth.c:788 fe-connect.c:2073 #, c-format msgid "local user with ID %d does not exist\n" msgstr "локальный пользователь Ñ ID %d не ÑущеÑтвует\n" -#: fe-connect.c:846 +#: fe-connect.c:906 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "неверное значение sslmode: \"%s\"\n" -#: fe-connect.c:867 +#: fe-connect.c:927 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "значение sslmode \"%s\" недопуÑтимо Ð´Ð»Ñ Ñборки без поддержки SSL\n" -#: fe-connect.c:1104 +#: fe-connect.c:1164 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "не удалоÑÑŒ перевеÑти Ñокет в режим TCP-передачи без задержки: %s\n" -#: fe-connect.c:1134 +#: fe-connect.c:1194 #, c-format msgid "" "could not connect to server: %s\n" @@ -126,7 +135,7 @@ msgstr "" "\tОн дейÑтвительно работает локально и принимает\n" "\tÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· доменный Ñокет \"%s\"?\n" -#: fe-connect.c:1189 +#: fe-connect.c:1249 #, c-format msgid "" "could not connect to server: %s\n" @@ -137,7 +146,7 @@ msgstr "" "\tОн дейÑтвительно работает по адреÑу \"%s\" (%s)\n" "\t и принимает TCP-ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (порт %s)?\n" -#: fe-connect.c:1198 +#: fe-connect.c:1258 #, c-format msgid "" "could not connect to server: %s\n" @@ -148,243 +157,223 @@ msgstr "" "\tОн дейÑтвительно работает по адреÑу \"%s\"\n" "\t и принимает TCP-ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (порт %s)?\n" -#: fe-connect.c:1249 -#, c-format -msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" -msgstr "ошибка в setsockopt(TCP_KEEPIDLE): %s\n" - -#: fe-connect.c:1262 -#, c-format -msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" -msgstr "ошибка в setsockopt(TCP_KEEPALIVE): %s\n" - -#: fe-connect.c:1294 -#, c-format -msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" -msgstr "ошибка в setsockopt(TCP_KEEPINTVL): %s\n" - -#: fe-connect.c:1326 +#: fe-connect.c:1309 fe-connect.c:1341 fe-connect.c:1374 fe-connect.c:1841 #, c-format -msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" -msgstr "ошибка в setsockopt(TCP_KEEPCNT): %s\n" +msgid "setsockopt(%s) failed: %s\n" +msgstr "ошибка в setsockopt(%s): %s\n" -#: fe-connect.c:1374 +#: fe-connect.c:1423 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "ошибка в WSAIoctl(SIO_KEEPALIVE_VALS): %ui\n" -#: fe-connect.c:1426 +#: fe-connect.c:1475 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "неверный номер порта: \"%s\"\n" -#: fe-connect.c:1459 +#: fe-connect.c:1508 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "длина пути доменного Ñокета \"%s\" превышает предел (%d байт)\n" -#: fe-connect.c:1478 +#: fe-connect.c:1527 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "преобразовать Ð¸Ð¼Ñ \"%s\" в Ð°Ð´Ñ€ÐµÑ Ð½Ðµ удалоÑÑŒ: %s\n" -#: fe-connect.c:1482 +#: fe-connect.c:1531 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "" "преобразовать путь к доменному Ñокету UNIX \"%s\" в Ð°Ð´Ñ€ÐµÑ Ð½Ðµ удалоÑÑŒ: %s\n" -#: fe-connect.c:1687 +#: fe-connect.c:1736 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "неверное ÑоÑтоÑние ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ - возможно разрушение памÑти\n" -#: fe-connect.c:1727 +#: fe-connect.c:1776 #, c-format msgid "could not create socket: %s\n" msgstr "не удалоÑÑŒ Ñоздать Ñокет: %s\n" -#: fe-connect.c:1749 +#: fe-connect.c:1798 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "не удалоÑÑŒ перевеÑти Ñокет в неблокирующий режим: %s\n" -#: fe-connect.c:1760 +#: fe-connect.c:1809 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "" "не удалоÑÑŒ перевеÑти Ñокет в режим Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¿Ñ€Ð¸ выполнении (close-on-exec): " "%s\n" -#: fe-connect.c:1779 +#: fe-connect.c:1828 msgid "keepalives parameter must be an integer\n" msgstr "параметр keepalives должен быть целым чиÑлом\n" -#: fe-connect.c:1792 -#, c-format -msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" -msgstr "ошибка в setsockopt(SO_KEEPALIVE): %s\n" - -#: fe-connect.c:1929 +#: fe-connect.c:1979 #, c-format msgid "could not get socket error status: %s\n" msgstr "не удалоÑÑŒ получить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Ñокета: %s\n" -#: fe-connect.c:1963 +#: fe-connect.c:2013 #, c-format msgid "could not get client address from socket: %s\n" msgstr "не удалоÑÑŒ получить Ð°Ð´Ñ€ÐµÑ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° из Ñокета: %s\n" -#: fe-connect.c:2005 +#: fe-connect.c:2055 msgid "requirepeer parameter is not supported on this platform\n" msgstr "параметр requirepeer не поддерживаетÑÑ Ð² Ñтой ОС\n" -#: fe-connect.c:2008 +#: fe-connect.c:2058 #, c-format msgid "could not get peer credentials: %s\n" msgstr "не удалоÑÑŒ получить учётные данные Ñервера: %s\n" -#: fe-connect.c:2031 +#: fe-connect.c:2081 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "" "requirepeer допуÑкает подключение только к \"%s\", но Ñервер работает под " "именем \"%s\"\n" -#: fe-connect.c:2065 +#: fe-connect.c:2115 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "не удалоÑÑŒ отправить пакет ÑоглаÑÐ¾Ð²Ð°Ð½Ð¸Ñ SSL: %s\n" -#: fe-connect.c:2104 +#: fe-connect.c:2154 #, c-format msgid "could not send startup packet: %s\n" msgstr "не удалоÑÑŒ отправить Ñтартовый пакет: %s\n" -#: fe-connect.c:2174 +#: fe-connect.c:2224 msgid "server does not support SSL, but SSL was required\n" msgstr "затребовано подключение через SSL, но Ñервер не поддерживает SSL\n" -#: fe-connect.c:2200 +#: fe-connect.c:2250 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "получен неверный ответ на ÑоглаÑование SSL: %c\n" -#: fe-connect.c:2275 fe-connect.c:2308 +#: fe-connect.c:2325 fe-connect.c:2358 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "ожидалÑÑ Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ от Ñервера, но получено: %c\n" -#: fe-connect.c:2475 +#: fe-connect.c:2525 #, c-format msgid "out of memory allocating GSSAPI buffer (%d)" msgstr "недоÑтаточно памÑти Ð´Ð»Ñ Ð±ÑƒÑ„ÐµÑ€Ð° GSSAPI (%d)" -#: fe-connect.c:2560 +#: fe-connect.c:2610 msgid "unexpected message from server during startup\n" msgstr "неожиданное Ñообщение от Ñервера в начале работы\n" -#: fe-connect.c:2654 +#: fe-connect.c:2704 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "неверное ÑоÑтоÑние ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ %d - возможно разрушение памÑти\n" -#: fe-connect.c:3090 fe-connect.c:3150 +#: fe-connect.c:3105 fe-connect.c:3165 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "ошибка в PGEventProc \"%s\" при обработке ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ PGEVT_CONNRESET\n" -#: fe-connect.c:3497 +#: fe-connect.c:3512 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "некорректный Ð°Ð´Ñ€ÐµÑ LDAP \"%s\": Ñхема должна быть ldap://\n" -#: fe-connect.c:3512 +#: fe-connect.c:3527 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "некорректный Ð°Ð´Ñ€ÐµÑ LDAP \"%s\": отÑутÑтвует уникальное имÑ\n" -#: fe-connect.c:3523 fe-connect.c:3576 +#: fe-connect.c:3538 fe-connect.c:3591 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "некорректный Ð°Ð´Ñ€ÐµÑ LDAP \"%s\": должен быть только один атрибут\n" -#: fe-connect.c:3533 fe-connect.c:3590 +#: fe-connect.c:3548 fe-connect.c:3605 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "" "некорректный Ð°Ð´Ñ€ÐµÑ LDAP \"%s\": не указана облаÑть поиÑка (base/one/sub)\n" -#: fe-connect.c:3544 +#: fe-connect.c:3559 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "некорректный Ð°Ð´Ñ€ÐµÑ LDAP \"%s\": нет фильтра\n" -#: fe-connect.c:3565 +#: fe-connect.c:3580 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "некорректный Ð°Ð´Ñ€ÐµÑ LDAP \"%s\": неверный номер порта\n" -#: fe-connect.c:3599 +#: fe-connect.c:3614 msgid "could not create LDAP structure\n" msgstr "не удалоÑÑŒ Ñоздать Ñтруктуру LDAP\n" -#: fe-connect.c:3675 +#: fe-connect.c:3690 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "ошибка поиÑка на Ñервере LDAP: %s\n" -#: fe-connect.c:3686 +#: fe-connect.c:3701 msgid "more than one entry found on LDAP lookup\n" msgstr "при поиÑке LDAP найдено более одного вхождениÑ\n" -#: fe-connect.c:3687 fe-connect.c:3699 +#: fe-connect.c:3702 fe-connect.c:3714 msgid "no entry found on LDAP lookup\n" msgstr "при поиÑке LDAP ничего не найдено\n" -#: fe-connect.c:3710 fe-connect.c:3723 +#: fe-connect.c:3725 fe-connect.c:3738 msgid "attribute has no values on LDAP lookup\n" msgstr "атрибут не Ñодержит значений при поиÑке LDAP\n" -#: fe-connect.c:3775 fe-connect.c:3794 fe-connect.c:4313 +#: fe-connect.c:3790 fe-connect.c:3809 fe-connect.c:4328 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "в Ñтроке ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÑ‚ \"=\" поÑле \"%s\"\n" -#: fe-connect.c:3867 fe-connect.c:4498 fe-connect.c:5212 +#: fe-connect.c:3882 fe-connect.c:4513 fe-connect.c:5251 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "неверный параметр ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ \"%s\"\n" -#: fe-connect.c:3883 fe-connect.c:4362 +#: fe-connect.c:3898 fe-connect.c:4377 msgid "unterminated quoted string in connection info string\n" msgstr "в Ñтроке ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ хватает закрывающей кавычки\n" -#: fe-connect.c:3923 +#: fe-connect.c:3938 msgid "could not get home directory to locate service definition file" msgstr "" "не удалоÑÑŒ получить домашний каталог Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файла определений Ñлужб" -#: fe-connect.c:3956 +#: fe-connect.c:3971 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "определение Ñлужбы \"%s\" не найдено\n" -#: fe-connect.c:3979 +#: fe-connect.c:3994 #, c-format msgid "service file \"%s\" not found\n" msgstr "файл определений Ñлужб \"%s\" не найден\n" -#: fe-connect.c:3992 +#: fe-connect.c:4007 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "Ñлишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ñтрока (%d) в файле определений Ñлужб \"%s\"\n" -#: fe-connect.c:4063 fe-connect.c:4107 +#: fe-connect.c:4078 fe-connect.c:4122 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в файле Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñлужб \"%s\" (Ñтрока %d)\n" -#: fe-connect.c:4074 +#: fe-connect.c:4089 #, c-format msgid "" "nested service specifications not supported in service file \"%s\", line %d\n" @@ -392,24 +381,24 @@ msgstr "" "рекурÑивные Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñлужб не поддерживаютÑÑ (файл Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñлужб \"%s" "\", Ñтрока %d)\n" -#: fe-connect.c:4756 +#: fe-connect.c:4795 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "во внутреннюю процедуру разбора Ñтроки передан ошибочный URI: \"%s\"\n" -#: fe-connect.c:4826 +#: fe-connect.c:4865 #, c-format msgid "" "end of string reached when looking for matching \"]\" in IPv6 host address " "in URI: \"%s\"\n" msgstr "URI не Ñодержит Ñимвол \"]\" поÑле адреÑа IPv6: \"%s\"\n" -#: fe-connect.c:4833 +#: fe-connect.c:4872 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "IPv6, ÑодержащийÑÑ Ð² URI, не может быть пуÑтым: \"%s\"\n" -#: fe-connect.c:4848 +#: fe-connect.c:4887 #, c-format msgid "" "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): " @@ -418,41 +407,41 @@ msgstr "" "неожиданный Ñимвол \"%c\" в позиции %d в URI (ожидалоÑÑŒ \":\" или \"/\"): " "\"%s\"\n" -#: fe-connect.c:4962 +#: fe-connect.c:5001 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "лишний разделитель ключа/Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ \"=\" в параметрах URI: \"%s\"\n" -#: fe-connect.c:4982 +#: fe-connect.c:5021 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "в параметрах URI не хватает Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ»Ñ ÐºÐ»ÑŽÑ‡Ð°/Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ \"=\": \"%s\"\n" -#: fe-connect.c:5033 +#: fe-connect.c:5072 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "неверный параметр в URI: \"%s\"\n" -#: fe-connect.c:5107 +#: fe-connect.c:5146 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "неверный Ñимвол, закодированный Ñ %%: \"%s\"\n" -#: fe-connect.c:5117 +#: fe-connect.c:5156 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "недопуÑтимое значение %%00 Ð´Ð»Ñ Ñимвола, закодированного Ñ %%: \"%s\"\n" -#: fe-connect.c:5451 +#: fe-connect.c:5490 msgid "connection pointer is NULL\n" msgstr "нулевой указатель ÑоединениÑ\n" -#: fe-connect.c:5749 +#: fe-connect.c:5788 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: файл паролей \"%s\" - не обычный файл\n" -#: fe-connect.c:5758 +#: fe-connect.c:5797 #, c-format msgid "" "WARNING: password file \"%s\" has group or world access; permissions should " @@ -461,7 +450,7 @@ msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: к файлу паролей \"%s\" имеют доÑтуп вÑе или группа; права " "должны быть u=rw (0600) или более ограниченные\n" -#: fe-connect.c:5872 +#: fe-connect.c:5911 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "пароль получен из файла \"%s\"\n" @@ -1045,6 +1034,18 @@ msgstr "не удалоÑÑŒ передать данные Ñерверу: %s\n" msgid "unrecognized socket error: 0x%08X/%d" msgstr "нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñокета: 0x%08X/%d" +#~ msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" +#~ msgstr "ошибка в setsockopt(TCP_KEEPIDLE): %s\n" + +#~ msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" +#~ msgstr "ошибка в setsockopt(TCP_KEEPALIVE): %s\n" + +#~ msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" +#~ msgstr "ошибка в setsockopt(TCP_KEEPINTVL): %s\n" + +#~ msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" +#~ msgstr "ошибка в setsockopt(SO_KEEPALIVE): %s\n" + #~ msgid "could not acquire mutex: %s\n" #~ msgstr "не удалоÑÑŒ заблокировать Ñемафор: %s\n" diff --git a/src/makefiles/Makefile.linux b/src/makefiles/Makefile.linux index 52bf0b1e2b..f4f091caef 100644 --- a/src/makefiles/Makefile.linux +++ b/src/makefiles/Makefile.linux @@ -1,15 +1,14 @@ AROPT = crs + export_dynamic = -Wl,-E # Use --enable-new-dtags to generate DT_RUNPATH instead of DT_RPATH. # This allows LD_LIBRARY_PATH to still work when needed. rpath = -Wl,-rpath,'$(rpathdir)',--enable-new-dtags + DLSUFFIX = .so -ifeq "$(findstring sparc,$(host_cpu))" "sparc" CFLAGS_SL = -fPIC -else -CFLAGS_SL = -fpic -endif + # Rule for building a shared library from a single .o file %.so: %.o diff --git a/src/makefiles/Makefile.netbsd b/src/makefiles/Makefile.netbsd index 31a52601af..43841c1597 100644 --- a/src/makefiles/Makefile.netbsd +++ b/src/makefiles/Makefile.netbsd @@ -9,11 +9,7 @@ endif DLSUFFIX = .so -ifeq ($(findstring sparc,$(host_cpu)), sparc) CFLAGS_SL = -fPIC -DPIC -else -CFLAGS_SL = -fpic -DPIC -endif # Rule for building a shared library from a single .o file diff --git a/src/makefiles/Makefile.openbsd b/src/makefiles/Makefile.openbsd index 7bf5493309..d8fde49d5c 100644 --- a/src/makefiles/Makefile.openbsd +++ b/src/makefiles/Makefile.openbsd @@ -7,11 +7,7 @@ endif DLSUFFIX = .so -ifeq ($(findstring sparc,$(host_cpu)), sparc) CFLAGS_SL = -fPIC -DPIC -else -CFLAGS_SL = -fpic -DPIC -endif # Rule for building a shared library from a single .o file diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile index b8e3585254..191f74067a 100644 --- a/src/pl/plperl/GNUmakefile +++ b/src/pl/plperl/GNUmakefile @@ -12,7 +12,11 @@ override CPPFLAGS += -DPLPERL_HAVE_UID_GID override CPPFLAGS += -Wno-comment endif -override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS) -I$(perl_archlibexp)/CORE +# Note: we need to make sure that the CORE directory is included 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 := -I. -I$(srcdir) $(CPPFLAGS) $(perl_embed_ccflags) -I$(perl_archlibexp)/CORE rpathdir = $(perl_archlibexp)/CORE diff --git a/src/pl/plperl/SPI.xs b/src/pl/plperl/SPI.xs index 0447c50df1..d9e6f579d4 100644 --- a/src/pl/plperl/SPI.xs +++ b/src/pl/plperl/SPI.xs @@ -9,44 +9,16 @@ /* this must be first: */ #include "postgres.h" -#include "mb/pg_wchar.h" /* for GetDatabaseEncoding */ /* Defined by Perl */ #undef _ /* perl stuff */ +#define PG_NEED_PERL_XSUB_H #include "plperl.h" #include "plperl_helpers.h" -/* - * Interface routine to catch ereports and punt them to Perl - */ -static void -do_plperl_return_next(SV *sv) -{ - MemoryContext oldcontext = CurrentMemoryContext; - - PG_TRY(); - { - plperl_return_next(sv); - } - PG_CATCH(); - { - ErrorData *edata; - - /* Must reset elog.c's state */ - MemoryContextSwitchTo(oldcontext); - edata = CopyErrorData(); - FlushErrorState(); - - /* Punt the error to Perl */ - croak_cstr(edata->message); - } - PG_END_TRY(); -} - - MODULE = PostgreSQL::InServer::SPI PREFIX = spi_ PROTOTYPES: ENABLE @@ -76,7 +48,7 @@ void spi_return_next(rv) SV *rv; CODE: - do_plperl_return_next(rv); + plperl_return_next(rv); SV * spi_spi_query(sv) diff --git a/src/pl/plperl/Util.xs b/src/pl/plperl/Util.xs index 8c3c47fec9..629d12aaaf 100644 --- a/src/pl/plperl/Util.xs +++ b/src/pl/plperl/Util.xs @@ -15,53 +15,15 @@ #include "fmgr.h" #include "utils/builtins.h" #include "utils/bytea.h" /* for byteain & byteaout */ -#include "mb/pg_wchar.h" /* for GetDatabaseEncoding */ + /* Defined by Perl */ #undef _ /* perl stuff */ +#define PG_NEED_PERL_XSUB_H #include "plperl.h" #include "plperl_helpers.h" -/* - * Implementation of plperl's elog() function - * - * If the error level is less than ERROR, we'll just emit the message and - * return. When it is ERROR, elog() will longjmp, which we catch and - * turn into a Perl croak(). Note we are assuming that elog() can't have - * any internal failures that are so bad as to require a transaction abort. - * - * This is out-of-line to suppress "might be clobbered by longjmp" warnings. - */ -static void -do_util_elog(int level, SV *msg) -{ - MemoryContext oldcontext = CurrentMemoryContext; - char * volatile cmsg = NULL; - - PG_TRY(); - { - cmsg = sv2cstr(msg); - elog(level, "%s", cmsg); - pfree(cmsg); - } - PG_CATCH(); - { - ErrorData *edata; - - /* Must reset elog.c's state */ - MemoryContextSwitchTo(oldcontext); - edata = CopyErrorData(); - FlushErrorState(); - - if (cmsg) - pfree(cmsg); - - /* Punt the error to Perl */ - croak_cstr(edata->message); - } - PG_END_TRY(); -} static text * sv2text(SV *sv) @@ -105,7 +67,7 @@ util_elog(level, msg) level = ERROR; if (level < DEBUG5) level = DEBUG5; - do_util_elog(level, msg); + plperl_util_elog(level, msg); SV * util_quote_literal(sv) diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index 2cd761496d..f4180117a5 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -6,6 +6,7 @@ **********************************************************************/ #include "postgres.h" + /* Defined by Perl */ #undef _ @@ -283,6 +284,7 @@ static void plperl_init_shared_libs(pTHX); static void plperl_trusted_init(void); static void plperl_untrusted_init(void); static HV *plperl_spi_execute_fetch_result(SPITupleTable *, uint64, int); +static void plperl_return_next_internal(SV *sv); static char *hek2cstr(HE *he); static SV **hv_store_string(HV *hv, const char *key, SV *val); static SV **hv_fetch_string(HV *hv, const char *key); @@ -300,12 +302,27 @@ static void activate_interpreter(plperl_interp_desc *interp_desc); static char *setlocale_perl(int category, char *locale); #endif +/* + * Decrement the refcount of the given SV within the active Perl interpreter + * + * This is handy because it reloads the active-interpreter pointer, saving + * some notation in callers that switch the active interpreter. + */ +static inline void +SvREFCNT_dec_current(SV *sv) +{ + dTHX; + + SvREFCNT_dec(sv); +} + /* * convert a HE (hash entry) key to a cstr in the current database encoding */ static char * hek2cstr(HE *he) { + dTHX; char *ret; SV *sv; @@ -656,15 +673,19 @@ select_perl_context(bool trusted) * to the database AFTER on_*_init code has run. See * http://archives.postgresql.org/pgsql-hackers/2010-01/msg02669.php */ - newXS("PostgreSQL::InServer::SPI::bootstrap", - boot_PostgreSQL__InServer__SPI, __FILE__); + { + dTHX; - eval_pv("PostgreSQL::InServer::SPI::bootstrap()", FALSE); - if (SvTRUE(ERRSV)) - ereport(ERROR, - (errcode(ERRCODE_EXTERNAL_ROUTINE_EXCEPTION), - errmsg("%s", strip_trailing_ws(sv2cstr(ERRSV))), - errcontext("while executing PostgreSQL::InServer::SPI::bootstrap"))); + newXS("PostgreSQL::InServer::SPI::bootstrap", + boot_PostgreSQL__InServer__SPI, __FILE__); + + eval_pv("PostgreSQL::InServer::SPI::bootstrap()", FALSE); + if (SvTRUE(ERRSV)) + ereport(ERROR, + (errcode(ERRCODE_EXTERNAL_ROUTINE_EXCEPTION), + errmsg("%s", strip_trailing_ws(sv2cstr(ERRSV))), + errcontext("while executing PostgreSQL::InServer::SPI::bootstrap"))); + } /* Fully initialized, so mark the hashtable entry valid */ interp_desc->interp = interp; @@ -807,53 +828,62 @@ plperl_init_interp(void) PERL_SET_CONTEXT(plperl); perl_construct(plperl); - /* run END blocks in perl_destruct instead of perl_run */ - PL_exit_flags |= PERL_EXIT_DESTRUCT_END; - /* - * Record the original function for the 'require' and 'dofile' opcodes. - * (They share the same implementation.) Ensure it's used for new - * interpreters. + * Run END blocks in perl_destruct instead of perl_run. Note that dTHX + * loads up a pointer to the current interpreter, so we have to postpone + * it to here rather than put it at the function head. */ - if (!pp_require_orig) - pp_require_orig = PL_ppaddr[OP_REQUIRE]; - else { - PL_ppaddr[OP_REQUIRE] = pp_require_orig; - PL_ppaddr[OP_DOFILE] = pp_require_orig; - } + dTHX; + + PL_exit_flags |= PERL_EXIT_DESTRUCT_END; + + /* + * Record the original function for the 'require' and 'dofile' + * opcodes. (They share the same implementation.) Ensure it's used + * for new interpreters. + */ + if (!pp_require_orig) + pp_require_orig = PL_ppaddr[OP_REQUIRE]; + else + { + PL_ppaddr[OP_REQUIRE] = pp_require_orig; + PL_ppaddr[OP_DOFILE] = pp_require_orig; + } #ifdef PLPERL_ENABLE_OPMASK_EARLY - /* - * For regression testing to prove that the PLC_PERLBOOT and PLC_TRUSTED - * code doesn't even compile any unsafe ops. In future there may be a - * valid need for them to do so, in which case this could be softened - * (perhaps moved to plperl_trusted_init()) or removed. - */ - PL_op_mask = plperl_opmask; + /* + * For regression testing to prove that the PLC_PERLBOOT and + * PLC_TRUSTED code doesn't even compile any unsafe ops. In future + * there may be a valid need for them to do so, in which case this + * could be softened (perhaps moved to plperl_trusted_init()) or + * removed. + */ + PL_op_mask = plperl_opmask; #endif - if (perl_parse(plperl, plperl_init_shared_libs, - nargs, embedding, NULL) != 0) - ereport(ERROR, - (errcode(ERRCODE_EXTERNAL_ROUTINE_EXCEPTION), - errmsg("%s", strip_trailing_ws(sv2cstr(ERRSV))), - errcontext("while parsing Perl initialization"))); + if (perl_parse(plperl, plperl_init_shared_libs, + nargs, embedding, NULL) != 0) + ereport(ERROR, + (errcode(ERRCODE_EXTERNAL_ROUTINE_EXCEPTION), + errmsg("%s", strip_trailing_ws(sv2cstr(ERRSV))), + errcontext("while parsing Perl initialization"))); - if (perl_run(plperl) != 0) - ereport(ERROR, - (errcode(ERRCODE_EXTERNAL_ROUTINE_EXCEPTION), - errmsg("%s", strip_trailing_ws(sv2cstr(ERRSV))), - errcontext("while running Perl initialization"))); + if (perl_run(plperl) != 0) + ereport(ERROR, + (errcode(ERRCODE_EXTERNAL_ROUTINE_EXCEPTION), + errmsg("%s", strip_trailing_ws(sv2cstr(ERRSV))), + errcontext("while running Perl initialization"))); #ifdef PLPERL_RESTORE_LOCALE - PLPERL_RESTORE_LOCALE(LC_COLLATE, save_collate); - PLPERL_RESTORE_LOCALE(LC_CTYPE, save_ctype); - PLPERL_RESTORE_LOCALE(LC_MONETARY, save_monetary); - PLPERL_RESTORE_LOCALE(LC_NUMERIC, save_numeric); - PLPERL_RESTORE_LOCALE(LC_TIME, save_time); + PLPERL_RESTORE_LOCALE(LC_COLLATE, save_collate); + PLPERL_RESTORE_LOCALE(LC_CTYPE, save_ctype); + PLPERL_RESTORE_LOCALE(LC_MONETARY, save_monetary); + PLPERL_RESTORE_LOCALE(LC_NUMERIC, save_numeric); + PLPERL_RESTORE_LOCALE(LC_TIME, save_time); #endif + } return plperl; } @@ -919,6 +949,7 @@ plperl_destroy_interp(PerlInterpreter **interp) * public API so isn't portably available.) Meanwhile END blocks can * be used to perform manual cleanup. */ + dTHX; /* Run END blocks - based on perl's perl_destruct() */ if (PL_exit_flags & PERL_EXIT_DESTRUCT_END) @@ -945,6 +976,7 @@ plperl_destroy_interp(PerlInterpreter **interp) static void plperl_trusted_init(void) { + dTHX; HV *stash; SV *sv; char *key; @@ -1025,6 +1057,8 @@ plperl_trusted_init(void) static void plperl_untrusted_init(void) { + dTHX; + /* * Nothing to do except execute plperl.on_plperlu_init */ @@ -1060,6 +1094,7 @@ strip_trailing_ws(const char *msg) static HeapTuple plperl_build_tuple_result(HV *perlhash, TupleDesc td) { + dTHX; Datum *values; bool *nulls; HE *he; @@ -1116,6 +1151,8 @@ plperl_hash_to_datum(SV *src, TupleDesc td) static SV * get_perl_array_ref(SV *sv) { + dTHX; + if (SvOK(sv) && SvROK(sv)) { if (SvTYPE(SvRV(sv)) == SVt_PVAV) @@ -1144,6 +1181,7 @@ array_to_datum_internal(AV *av, ArrayBuildState *astate, Oid arraytypid, Oid elemtypid, int32 typmod, FmgrInfo *finfo, Oid typioparam) { + dTHX; int i; int len = av_len(av) + 1; @@ -1215,6 +1253,7 @@ array_to_datum_internal(AV *av, ArrayBuildState *astate, static Datum plperl_array_to_datum(SV *src, Oid typid, int32 typmod) { + dTHX; ArrayBuildState *astate; Oid elemtypid; FmgrInfo finfo; @@ -1417,6 +1456,7 @@ plperl_sv_to_literal(SV *sv, char *fqtypename) static SV * plperl_ref_from_pg_array(Datum arg, Oid typid) { + dTHX; ArrayType *ar = DatumGetArrayTypeP(arg); Oid elementtype = ARR_ELEMTYPE(ar); int16 typlen; @@ -1485,6 +1525,7 @@ plperl_ref_from_pg_array(Datum arg, Oid typid) static SV * split_array(plperl_array_info *info, int first, int last, int nest) { + dTHX; int i; AV *result; @@ -1518,6 +1559,7 @@ split_array(plperl_array_info *info, int first, int last, int nest) static SV * make_array_ref(plperl_array_info *info, int first, int last) { + dTHX; int i; AV *result = newAV(); @@ -1555,6 +1597,7 @@ make_array_ref(plperl_array_info *info, int first, int last) static SV * plperl_trigger_build_args(FunctionCallInfo fcinfo) { + dTHX; TriggerData *tdata; TupleDesc tupdesc; int i; @@ -1661,6 +1704,7 @@ plperl_trigger_build_args(FunctionCallInfo fcinfo) static SV * plperl_event_trigger_build_args(FunctionCallInfo fcinfo) { + dTHX; EventTriggerData *tdata; HV *hv; @@ -1679,6 +1723,7 @@ plperl_event_trigger_build_args(FunctionCallInfo fcinfo) static HeapTuple plperl_modify_tuple(HV *hvTD, TriggerData *tdata, HeapTuple otup) { + dTHX; SV **svp; HV *hvNew; HE *he; @@ -1880,7 +1925,7 @@ plperl_inline_handler(PG_FUNCTION_ARGS) perlret = plperl_call_perl_func(&desc, &fake_fcinfo); - SvREFCNT_dec(perlret); + SvREFCNT_dec_current(perlret); if (SPI_finish() != SPI_OK_FINISH) elog(ERROR, "SPI_finish() failed"); @@ -1888,7 +1933,7 @@ plperl_inline_handler(PG_FUNCTION_ARGS) PG_CATCH(); { if (desc.reference) - SvREFCNT_dec(desc.reference); + SvREFCNT_dec_current(desc.reference); current_call_data = save_call_data; activate_interpreter(oldinterp); PG_RE_THROW(); @@ -1896,7 +1941,7 @@ plperl_inline_handler(PG_FUNCTION_ARGS) PG_END_TRY(); if (desc.reference) - SvREFCNT_dec(desc.reference); + SvREFCNT_dec_current(desc.reference); current_call_data = save_call_data; activate_interpreter(oldinterp); @@ -2024,6 +2069,7 @@ plperlu_validator(PG_FUNCTION_ARGS) static void plperl_create_sub(plperl_proc_desc *prodesc, char *s, Oid fn_oid) { + dTHX; dSP; char subname[NAMEDATALEN + 40]; HV *pragma_hv = newHV(); @@ -2110,6 +2156,7 @@ plperl_init_shared_libs(pTHX) static SV * plperl_call_perl_func(plperl_proc_desc *desc, FunctionCallInfo fcinfo) { + dTHX; dSP; SV *retval; int i; @@ -2203,6 +2250,7 @@ static SV * plperl_call_perl_trigger_func(plperl_proc_desc *desc, FunctionCallInfo fcinfo, SV *td) { + dTHX; dSP; SV *retval, *TDsv; @@ -2271,6 +2319,7 @@ plperl_call_perl_event_trigger_func(plperl_proc_desc *desc, FunctionCallInfo fcinfo, SV *td) { + dTHX; dSP; SV *retval, *TDsv; @@ -2390,13 +2439,14 @@ plperl_func_handler(PG_FUNCTION_ARGS) sav = get_perl_array_ref(perlret); if (sav) { + dTHX; int i = 0; SV **svp = 0; AV *rav = (AV *) SvRV(sav); while ((svp = av_fetch(rav, i, FALSE)) != NULL) { - plperl_return_next(*svp); + plperl_return_next_internal(*svp); i++; } } @@ -2433,7 +2483,7 @@ plperl_func_handler(PG_FUNCTION_ARGS) /* Restore the previous error callback */ error_context_stack = pl_error_context.previous; - SvREFCNT_dec(perlret); + SvREFCNT_dec_current(perlret); return retval; } @@ -2537,9 +2587,9 @@ plperl_trigger_handler(PG_FUNCTION_ARGS) /* Restore the previous error callback */ error_context_stack = pl_error_context.previous; - SvREFCNT_dec(svTD); + SvREFCNT_dec_current(svTD); if (perlret) - SvREFCNT_dec(perlret); + SvREFCNT_dec_current(perlret); return retval; } @@ -2578,9 +2628,7 @@ plperl_event_trigger_handler(PG_FUNCTION_ARGS) /* Restore the previous error callback */ error_context_stack = pl_error_context.previous; - SvREFCNT_dec(svTD); - - return; + SvREFCNT_dec_current(svTD); } @@ -2623,7 +2671,7 @@ free_plperl_function(plperl_proc_desc *prodesc) plperl_interp_desc *oldinterp = plperl_active_interp; activate_interpreter(prodesc->interp); - SvREFCNT_dec(prodesc->reference); + SvREFCNT_dec_current(prodesc->reference); activate_interpreter(oldinterp); } /* Get rid of what we conveniently can of our own structs */ @@ -2937,6 +2985,7 @@ plperl_hash_from_datum(Datum attr) static SV * plperl_hash_from_tuple(HeapTuple tuple, TupleDesc tupdesc) { + dTHX; HV *hv; int i; @@ -3095,6 +3144,7 @@ static HV * plperl_spi_execute_fetch_result(SPITupleTable *tuptable, uint64 processed, int status) { + dTHX; HV *result; check_spi_usage_allowed(); @@ -3138,15 +3188,40 @@ plperl_spi_execute_fetch_result(SPITupleTable *tuptable, uint64 processed, /* - * Note: plperl_return_next is called both in Postgres and Perl contexts. - * We report any errors in Postgres fashion (via ereport). If called in - * Perl context, it is SPI.xs's responsibility to catch the error and - * convert to a Perl error. We assume (perhaps without adequate justification) - * that we need not abort the current transaction if the Perl code traps the - * error. + * plperl_return_next catches any error and converts it to a Perl error. + * We assume (perhaps without adequate justification) that we need not abort + * the current transaction if the Perl code traps the error. */ void plperl_return_next(SV *sv) +{ + MemoryContext oldcontext = CurrentMemoryContext; + + PG_TRY(); + { + plperl_return_next_internal(sv); + } + PG_CATCH(); + { + ErrorData *edata; + + /* Must reset elog.c's state */ + MemoryContextSwitchTo(oldcontext); + edata = CopyErrorData(); + FlushErrorState(); + + /* Punt the error to Perl */ + croak_cstr(edata->message); + } + PG_END_TRY(); +} + +/* + * plperl_return_next_internal reports any errors in Postgres fashion + * (via ereport). + */ +static void +plperl_return_next_internal(SV *sv) { plperl_proc_desc *prodesc; FunctionCallInfo fcinfo; @@ -3173,12 +3248,18 @@ plperl_return_next(SV *sv) /* * This is the first call to return_next in the current PL/Perl - * function call, so memoize some lookups + * function call, so identify the output tuple descriptor and create a + * tuplestore to hold the result rows. */ if (prodesc->fn_retistuple) (void) get_call_result_type(fcinfo, NULL, &tupdesc); else + { tupdesc = rsi->expectedDesc; + /* Protect assumption below that we return exactly one column */ + if (tupdesc == NULL || tupdesc->natts != 1) + elog(ERROR, "expected single-column result descriptor for non-composite SETOF result"); + } /* * Make sure the tuple_store and ret_tdesc are sufficiently @@ -3226,20 +3307,20 @@ plperl_return_next(SV *sv) } else { - Datum ret; - bool isNull; + Datum ret[1]; + bool isNull[1]; - ret = plperl_sv_to_datum(sv, - prodesc->result_oid, - -1, - fcinfo, - &prodesc->result_in_func, - prodesc->result_typioparam, - &isNull); + ret[0] = plperl_sv_to_datum(sv, + prodesc->result_oid, + -1, + fcinfo, + &prodesc->result_in_func, + prodesc->result_typioparam, + &isNull[0]); tuplestore_putvalues(current_call_data->tuple_store, current_call_data->ret_tdesc, - &ret, &isNull); + ret, isNull); } MemoryContextSwitchTo(old_cxt); @@ -3350,6 +3431,7 @@ plperl_spi_fetchrow(char *cursor) PG_TRY(); { + dTHX; Portal p = SPI_cursor_find(cursor); if (!p) @@ -3617,6 +3699,8 @@ plperl_spi_exec_prepared(char *query, HV *attr, int argc, SV **argv) PG_TRY(); { + dTHX; + /************************************************************ * Fetch the saved plan descriptor, see if it's o.k. ************************************************************/ @@ -3887,6 +3971,47 @@ plperl_spi_freeplan(char *query) SPI_freeplan(plan); } +/* + * Implementation of plperl's elog() function + * + * If the error level is less than ERROR, we'll just emit the message and + * return. When it is ERROR, elog() will longjmp, which we catch and + * turn into a Perl croak(). Note we are assuming that elog() can't have + * any internal failures that are so bad as to require a transaction abort. + * + * The main reason this is out-of-line is to avoid conflicts between XSUB.h + * and the PG_TRY macros. + */ +void +plperl_util_elog(int level, SV *msg) +{ + MemoryContext oldcontext = CurrentMemoryContext; + char *volatile cmsg = NULL; + + PG_TRY(); + { + cmsg = sv2cstr(msg); + elog(level, "%s", cmsg); + pfree(cmsg); + } + PG_CATCH(); + { + ErrorData *edata; + + /* Must reset elog.c's state */ + MemoryContextSwitchTo(oldcontext); + edata = CopyErrorData(); + FlushErrorState(); + + if (cmsg) + pfree(cmsg); + + /* Punt the error to Perl */ + croak_cstr(edata->message); + } + PG_END_TRY(); +} + /* * Store an SV into a hash table under a key that is a string assumed to be * in the current database's encoding. @@ -3894,6 +4019,7 @@ plperl_spi_freeplan(char *query) static SV ** hv_store_string(HV *hv, const char *key, SV *val) { + dTHX; int32 hlen; char *hkey; SV **ret; @@ -3920,6 +4046,7 @@ hv_store_string(HV *hv, const char *key, SV *val) static SV ** hv_fetch_string(HV *hv, const char *key) { + dTHX; int32 hlen; char *hkey; SV **ret; @@ -3978,6 +4105,7 @@ plperl_inline_callback(void *arg) static char * setlocale_perl(int category, char *locale) { + dTHX; char *RETVAL = setlocale(category, locale); if (RETVAL) @@ -4042,4 +4170,4 @@ setlocale_perl(int category, char *locale) return RETVAL; } -#endif +#endif /* WIN32 */ diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h index 0146d60a11..a4593cac37 100644 --- a/src/pl/plperl/plperl.h +++ b/src/pl/plperl/plperl.h @@ -24,7 +24,7 @@ #ifdef isnan #undef isnan #endif -#endif +#endif /* WIN32 */ /* * Supply a value of PERL_UNUSED_DECL that will satisfy gcc - the one @@ -43,10 +43,22 @@ #endif -/* required for perl API */ +/* + * Get the basic Perl API. We use PERL_NO_GET_CONTEXT mode so that our code + * can compile against MULTIPLICITY Perl builds without including XSUB.h. + */ +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" + +/* + * We want to include XSUB.h only within .xs files, because on some platforms + * it undesirably redefines a lot of libc functions. But it must appear + * before ppport.h, so use a #define flag to control inclusion here. + */ +#ifdef PG_NEED_PERL_XSUB_H #include "XSUB.h" +#endif /* put back our snprintf and vsnprintf */ #ifdef USE_REPL_SNPRINTF @@ -106,5 +118,6 @@ SV *plperl_spi_query_prepared(char *, int, SV **); void plperl_spi_freeplan(char *); void plperl_spi_cursor_close(char *); char *plperl_sv_to_literal(SV *, char *); +void plperl_util_elog(int level, SV *msg); #endif /* PL_PERL_H */ diff --git a/src/pl/plperl/plperl_helpers.h b/src/pl/plperl/plperl_helpers.h index f8aa06835c..8861736f9c 100644 --- a/src/pl/plperl/plperl_helpers.h +++ b/src/pl/plperl/plperl_helpers.h @@ -50,6 +50,7 @@ utf_e2u(const char *str) static inline char * sv2cstr(SV *sv) { + dTHX; char *val, *res; STRLEN len; @@ -107,6 +108,7 @@ sv2cstr(SV *sv) static inline SV * cstr2sv(const char *str) { + dTHX; SV *sv; char *utf8_str; @@ -134,6 +136,8 @@ cstr2sv(const char *str) static inline void croak_cstr(const char *str) { + dTHX; + #ifdef croak_sv /* Use sv_2mortal() to be sure the transient SV gets freed */ croak_sv(sv_2mortal(cstr2sv(str))); diff --git a/src/pl/plperl/po/es.po b/src/pl/plperl/po/es.po index 3cf4f37451..09cd64dfae 100644 --- a/src/pl/plperl/po/es.po +++ b/src/pl/plperl/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: plperl (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-25 11:29-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" @@ -20,205 +20,205 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.7\n" -#: plperl.c:405 +#: plperl.c:422 msgid "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "Si es verdadero, se compilará código Perl confiable y no confiable en modo «strict»." -#: plperl.c:419 +#: plperl.c:436 msgid "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "Código Perl de inicialización a ejecutar cuando un intérprete Perl es inicializado." -#: plperl.c:441 +#: plperl.c:458 msgid "Perl initialization code to execute once when plperl is first used." msgstr "Código Perl de inicialización a ejecutar cuando plperl se usa por primera vez." -#: plperl.c:449 +#: plperl.c:466 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "Código Perl de inicialización a ejecutar cuando plperlu se usa por primera vez." -#: plperl.c:646 +#: plperl.c:663 #, c-format msgid "cannot allocate multiple Perl interpreters on this platform" msgstr "no se pueden instanciar múltiples intérpretes Perl en esta plataforma" -#: plperl.c:666 plperl.c:841 plperl.c:847 plperl.c:961 plperl.c:973 -#: plperl.c:1016 plperl.c:1037 plperl.c:2080 plperl.c:2189 plperl.c:2256 -#: plperl.c:2318 +#: plperl.c:686 plperl.c:870 plperl.c:876 plperl.c:993 plperl.c:1005 +#: plperl.c:1048 plperl.c:1071 plperl.c:2126 plperl.c:2236 plperl.c:2304 +#: plperl.c:2367 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:667 +#: plperl.c:687 #, c-format msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "mientras se ejecutaba PostgreSQL::InServer::SPI::bootstrap" -#: plperl.c:842 +#: plperl.c:871 #, c-format msgid "while parsing Perl initialization" msgstr "mientras se interpretaba la inicialización de Perl" -#: plperl.c:848 +#: plperl.c:877 #, c-format msgid "while running Perl initialization" msgstr "mientras se ejecutaba la inicialización de Perl" -#: plperl.c:962 +#: plperl.c:994 #, c-format msgid "while executing PLC_TRUSTED" msgstr "mientras se ejecutaba PLC_TRUSTED" -#: plperl.c:974 +#: plperl.c:1006 #, c-format msgid "while executing utf8fix" msgstr "mientras se ejecutaba utf8fix" -#: plperl.c:1017 +#: plperl.c:1049 #, c-format msgid "while executing plperl.on_plperl_init" msgstr "mientras se ejecutaba plperl.on_plperl_init" -#: plperl.c:1038 +#: plperl.c:1072 #, c-format msgid "while executing plperl.on_plperlu_init" msgstr "mientras se ejecutaba plperl.on_plperlu_init" -#: plperl.c:1082 plperl.c:1722 +#: plperl.c:1117 plperl.c:1767 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "el hash de Perl contiene el columna inexistente «%s»" -#: plperl.c:1167 +#: plperl.c:1205 #, 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)" -#: plperl.c:1179 plperl.c:1196 +#: plperl.c:1217 plperl.c:1234 #, c-format msgid "multidimensional arrays must have array expressions with matching dimensions" msgstr "los arrays multidimensionales deben tener expresiones de arrays con dimensiones coincidentes" -#: plperl.c:1231 +#: plperl.c:1270 #, c-format msgid "cannot convert Perl array to non-array type %s" msgstr "no se puede convertir un array de Perl al tipo no-array %s" -#: plperl.c:1333 +#: plperl.c:1372 #, c-format msgid "cannot convert Perl hash to non-composite type %s" msgstr "no se puede convertir un hash de Perl al tipo no compuesto %s" -#: plperl.c:1344 +#: plperl.c:1383 #, c-format msgid "function returning record called in context that cannot accept type record" msgstr "se llamó una función que retorna un registro en un contexto que no puede aceptarlo" -#: plperl.c:1359 +#: plperl.c:1398 #, c-format msgid "PL/Perl function must return reference to hash or array" msgstr "una función Perl debe retornar una referencia a un hash o array" -#: plperl.c:1396 +#: plperl.c:1435 #, c-format msgid "lookup failed for type %s" msgstr "búsqueda del tipo %s falló" -#: plperl.c:1699 +#: plperl.c:1744 #, c-format msgid "$_TD->{new} does not exist" msgstr "$_TD->{new} no existe" -#: plperl.c:1703 +#: plperl.c:1748 #, c-format msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new} no es una referencia a un hash" -#: plperl.c:1956 plperl.c:2790 +#: plperl.c:2001 plperl.c:2838 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "las funciones en PL/Perl no pueden retornar el tipo %s" -#: plperl.c:1969 plperl.c:2835 +#: plperl.c:2014 plperl.c:2883 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "funciones de PL/Perl no pueden aceptar el tipo %s" -#: plperl.c:2085 +#: plperl.c:2131 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "no se obtuvo una referencia CODE en la compilación de la función «%s»" -#: plperl.c:2177 +#: plperl.c:2224 #, c-format msgid "didn't get a return item from function" msgstr "no se obtuvo un elemento de retorno desde la función" -#: plperl.c:2220 plperl.c:2286 +#: plperl.c:2268 plperl.c:2335 #, c-format msgid "couldn't fetch $_TD" msgstr "no se pudo obtener $_TD" -#: plperl.c:2244 plperl.c:2306 +#: plperl.c:2292 plperl.c:2355 #, c-format msgid "didn't get a return item from trigger function" msgstr "no se obtuvo un elemento de retorno desde la función de disparador" -#: plperl.c:2363 +#: plperl.c:2412 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "se llamó a una función que retorna un conjunto en un contexto que no puede aceptarlo" -#: plperl.c:2407 +#: plperl.c:2457 #, c-format msgid "set-returning PL/Perl function must return reference to array or use return_next" msgstr "una función PL/Perl que retorna un conjunto debe retornar una referencia a un array o usar return_next" -#: plperl.c:2521 +#: plperl.c:2571 #, c-format msgid "ignoring modified row in DELETE trigger" msgstr "ignorando la tupla modificada en el disparador DELETE" -#: plperl.c:2529 +#: plperl.c:2579 #, c-format msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "el resultado de la función disparadora en PL/Perl debe ser undef, «SKIP» o «MODIFY»" -#: plperl.c:2708 plperl.c:2718 +#: plperl.c:2756 plperl.c:2766 #, c-format msgid "out of memory" msgstr "memoria agotada" -#: plperl.c:2782 +#: plperl.c:2830 #, c-format msgid "trigger functions can only be called as triggers" msgstr "las funciones disparadoras sólo pueden ser llamadas como disparadores" -#: plperl.c:3121 +#: plperl.c:3171 #, c-format msgid "query result has too many rows to fit in a Perl array" msgstr "el resultado de la consulta tiene demasiados registros y no entran en un array de Perl" -#: plperl.c:3166 +#: plperl.c:3241 #, c-format msgid "cannot use return_next in a non-SETOF function" msgstr "no se puede utilizar return_next en una función sin SETOF" -#: plperl.c:3222 +#: plperl.c:3301 #, c-format msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash" msgstr "una función Perl que retorna SETOF de un tipo compuesto debe invocar return_next con una referencia a un hash" -#: plperl.c:3954 +#: plperl.c:4075 #, c-format msgid "PL/Perl function \"%s\"" msgstr "función PL/Perl «%s»" -#: plperl.c:3966 +#: plperl.c:4087 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "compilación de la función PL/Perl «%s»" -#: plperl.c:3975 +#: plperl.c:4096 #, c-format msgid "PL/Perl anonymous code block" msgstr "bloque de código anónimo de PL/Perl" diff --git a/src/pl/plperl/po/ja.po b/src/pl/plperl/po/ja.po index cab0253534..db28352dbb 100644 --- a/src/pl/plperl/po/ja.po +++ b/src/pl/plperl/po/ja.po @@ -5,11 +5,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: 2012-08-11 17:49+0900\n" +"POT-Creation-Date: 2017-04-04 11:46+0900\n" "PO-Revision-Date: 2012-08-11 17:51+0900\n" -"Last-Translator: Honda Shigehiro\n" +"Last-Translator: Daisuke Higuchi \n" "Language-Team: jpug-doc \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -17,177 +17,206 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: plperl.c:365 +#: plperl.c:405 msgid "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "真ãªã‚‰ã°ä¿¡é ¼ã—ã€ä¿¡é ¼ã•れãªã„Perlã®ã‚³ãƒ¼ãƒ‰ã¯strictモードã§ã‚³ãƒ³ãƒ‘イルã•れã¾ã™ã€‚" -#: plperl.c:379 +#: plperl.c:419 msgid "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "Perl ã®ã‚¤ãƒ³ã‚¿ãƒ—リタãŒåˆæœŸåŒ–ã•れる際ã«å®Ÿè¡Œã•れるã¹ã Perl åˆæœŸåŒ–コード" -#: plperl.c:401 +#: plperl.c:441 msgid "Perl initialization code to execute once when plperl is first used." msgstr "plperl ãŒæœ€åˆã«ä½¿ç”¨ã•れる際ã«ä¸€åº¦å®Ÿè¡Œã•れるã¹ã Perl åˆæœŸåŒ–コード" -#: plperl.c:409 +#: plperl.c:449 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "plperlu ãŒæœ€åˆã«ä½¿ç”¨ã•れる際ã«ä¸€åº¦å®Ÿè¡Œã•れるã¹ã Perl åˆæœŸåŒ–コード" -#: plperl.c:626 plperl.c:788 plperl.c:793 plperl.c:897 plperl.c:908 -#: plperl.c:949 plperl.c:970 plperl.c:1943 plperl.c:2038 plperl.c:2100 +#: plperl.c:646 +#, c-format +msgid "cannot allocate multiple Perl interpreters on this platform" +msgstr "ã“ã®ãƒ—ラットフォームã§ã¯è¤‡æ•°ã®Perlインタプリタを割り当ã¦ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: plperl.c:666 plperl.c:841 plperl.c:847 plperl.c:961 plperl.c:973 +#: plperl.c:1016 plperl.c:1037 plperl.c:2080 plperl.c:2189 plperl.c:2256 +#: plperl.c:2318 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:627 +#: plperl.c:667 #, c-format msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "PostgreSQL::InServer::SPI::bootstrap ã®å®Ÿè¡Œä¸­ã«" -#: plperl.c:789 +#: plperl.c:842 #, c-format msgid "while parsing Perl initialization" msgstr "Perl åˆæœŸåŒ–処ç†ã®ãƒ‘ース中ã«" -#: plperl.c:794 +#: plperl.c:848 #, c-format msgid "while running Perl initialization" msgstr "Perl åˆæœŸåŒ–処ç†ã®å®Ÿè¡Œä¸­ã«" -#: plperl.c:898 +#: plperl.c:962 #, c-format msgid "while executing PLC_TRUSTED" msgstr "PLC_TRUSTED ã®å®Ÿè¡Œä¸­ã«" -#: plperl.c:909 +#: plperl.c:974 #, c-format msgid "while executing utf8fix" msgstr "utf8fix ã®å®Ÿè¡Œä¸­ã«" -#: plperl.c:950 +#: plperl.c:1017 #, c-format msgid "while executing plperl.on_plperl_init" msgstr "plperl.on_plperl_init ã®å®Ÿè¡Œä¸­ã«" -#: plperl.c:971 +#: plperl.c:1038 #, c-format msgid "while executing plperl.on_plperlu_init" msgstr "plperl.on_plperlu_init ã®å®Ÿè¡Œä¸­ã«" -#: plperl.c:1015 plperl.c:1615 +#: plperl.c:1082 plperl.c:1722 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "Perlãƒãƒƒã‚·ãƒ¥ã«å­˜åœ¨ã—ãªã„列\"%s\"ãŒå«ã¾ã‚Œã¾ã™" -#: plperl.c:1100 +#: plperl.c:1167 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "é…åˆ—ã®æ¬¡æ•°(%d)ãŒä¸Šé™(%d)ã‚’è¶…ãˆã¦ã„ã¾ã™" -#: plperl.c:1112 plperl.c:1129 +#: plperl.c:1179 plperl.c:1196 #, c-format msgid "multidimensional arrays must have array expressions with matching dimensions" msgstr "多次元é…åˆ—ã¯æ¬¡æ•°ã«åˆã£ãŸé…列å¼ã‚’æŒãŸãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: plperl.c:1166 +#: plperl.c:1231 #, c-format msgid "cannot convert Perl array to non-array type %s" msgstr "Perlé…列をéžé…列型%sã«å¤‰æ›ã§ãã¾ã›ã‚“" -#: plperl.c:1262 +#: plperl.c:1333 #, c-format msgid "cannot convert Perl hash to non-composite type %s" msgstr "Perlãƒãƒƒã‚·ãƒ¥ã‚’éžè¤‡åˆåž‹%sã«å¤‰æ›ã§ãã¾ã›ã‚“" -#: plperl.c:1273 +#: plperl.c:1344 #, c-format msgid "function returning record called in context that cannot accept type record" msgstr "レコード型をå—ã‘付ã‘られãªã„コンテキストã§ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’è¿”ã™é–¢æ•°ãŒå‘¼ã³å‡ºã•れã¾ã—ãŸ" -#: plperl.c:1288 +#: plperl.c:1359 #, c-format msgid "PL/Perl function must return reference to hash or array" msgstr "PL/Perl関数ã¯ãƒãƒƒã‚·ãƒ¥ã¾ãŸã¯é…列ã¸ã®å‚ç…§ã‚’è¿”ã™å¿…è¦ãŒã‚りã¾ã™" -#: plperl.c:1592 +#: plperl.c:1396 +#, c-format +msgid "lookup failed for type %s" +msgstr "%såž‹ã®æ¤œç´¢ã«å¤±æ•—ã—ã¾ã—ãŸ" + +#: plperl.c:1699 #, c-format msgid "$_TD->{new} does not exist" msgstr "$_TD->{new}ã¯å­˜åœ¨ã—ã¾ã›ã‚“" -#: plperl.c:1596 +#: plperl.c:1703 #, c-format msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new}ã¯ãƒãƒƒã‚·ãƒ¥ã¸ã®å‚ç…§ã§ã¯ã‚りã¾ã›ã‚“" -#: plperl.c:1820 plperl.c:2518 +#: plperl.c:1956 plperl.c:2790 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "PL/Perl関数ã¯%s型を返ã™ã“ã¨ãŒã§ãã¾ã›ã‚“" -#: plperl.c:1833 plperl.c:2565 +#: plperl.c:1969 plperl.c:2835 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "PL/Perl関数ã¯%s型をå—ã‘付ã‘られã¾ã›ã‚“" -#: plperl.c:1947 +#: plperl.c:2085 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "関数 \"%s\" ã®ã‚³ãƒ³ãƒ‘イルã‹ã‚‰ã¯ã‚³ãƒ¼ãƒ‰å‚ç…§ã‚’å–å¾—ã—ã¾ã›ã‚“ã§ã—ãŸ" -#: plperl.c:2151 +#: plperl.c:2177 +#, c-format +msgid "didn't get a return item from function" +msgstr "関数ã‹ã‚‰æˆ»ã‚Šå€¤ã‚’å–å¾—ã—ã¾ã›ã‚“ã§ã—ãŸ" + +#: plperl.c:2220 plperl.c:2286 +#, c-format +msgid "couldn't fetch $_TD" +msgstr "$_TD をフェッãƒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: plperl.c:2244 plperl.c:2306 +#, c-format +msgid "didn't get a return item from trigger function" +msgstr "トリガ関数ã‹ã‚‰æˆ»ã‚Šå€¤ã‚’å–å¾—ã—ã¾ã›ã‚“ã§ã—ãŸ" + +#: plperl.c:2363 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "ã“ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§é›†åˆå€¤ã®é–¢æ•°ã¯é›†åˆã‚’å—ã‘付ã‘られã¾ã›ã‚“" -#: plperl.c:2195 +#: plperl.c:2407 #, c-format msgid "set-returning PL/Perl function must return reference to array or use return_next" msgstr "集åˆã‚’è¿”ã™PL/Perl関数ã¯é…列ã¸ã®å‚ç…§ã‚’è¿”ã™ã€ã¾ãŸã¯ã€return_nextを使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™" -#: plperl.c:2315 +#: plperl.c:2521 #, c-format msgid "ignoring modified row in DELETE trigger" msgstr "DELETEトリガã«ã¦å¤‰æ›´ã•れãŸè¡Œã‚’無視ã—ã¾ã™" -#: plperl.c:2323 +#: plperl.c:2529 #, c-format msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "PL/Perlトリガ関数ã®çµæžœã¯\"SKIP\"ã¾ãŸã¯\"MODIFY\"ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: plperl.c:2449 plperl.c:2455 +#: plperl.c:2708 plperl.c:2718 #, c-format msgid "out of memory" msgstr "メモリä¸è¶³ã§ã™" -#: plperl.c:2509 +#: plperl.c:2782 #, c-format msgid "trigger functions can only be called as triggers" msgstr "トリガー関数ã¯ãƒˆãƒªã‚¬ãƒ¼ã¨ã—ã¦ã®ã¿ã‚³ãƒ¼ãƒ«ã§ãã¾ã™" -#: plperl.c:2885 +#: plperl.c:3121 +#, c-format +msgid "query result has too many rows to fit in a Perl array" +msgstr "å•ã„åˆã‚ã›çµæžœã®è¡ŒãŒå¤šã™ãŽã¦Perlé…列ã«åŽã¾ã‚Šã¾ã›ã‚“" + +#: plperl.c:3166 #, c-format msgid "cannot use return_next in a non-SETOF function" msgstr "SETOF関数以外ã§ã¯return_nextを使用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: plperl.c:2941 +#: plperl.c:3220 #, c-format msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash" msgstr "複åˆåž‹ã®SETOFã‚’è¿”ã™PL/Perl関数ã¯ãƒãƒƒã‚·ãƒ¥ã¸ã®å‚ç…§ã‚’æŒã¤return_nextを呼ã³å‡ºã•ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: plperl.c:3652 +#: plperl.c:3948 #, c-format msgid "PL/Perl function \"%s\"" msgstr "PL/Perl 関数 \"%s\"" -#: plperl.c:3664 +#: plperl.c:3960 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "PL/Perl 関数 \"%s\" ã®ã‚³ãƒ³ãƒ‘イル" -#: plperl.c:3673 +#: plperl.c:3969 #, c-format msgid "PL/Perl anonymous code block" msgstr "PL/Perl ã®ç„¡åコードブロック" -#~ msgid "composite-returning PL/Perl function must return reference to hash" -#~ msgstr "複åˆåž‹ã‚’è¿”ã™PL/Perl関数ã¯ãƒãƒƒã‚·ãƒ¥ã¸ã®å‚ç…§ã‚’è¿”ã™å¿…è¦ãŒã‚りã¾ã™" diff --git a/src/pl/plperl/po/ru.po b/src/pl/plperl/po/ru.po index ca66ed12cd..65eeeedd23 100644 --- a/src/pl/plperl/po/ru.po +++ b/src/pl/plperl/po/ru.po @@ -1,13 +1,13 @@ # Russian message translation file for plperl # 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: plperl (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 18:07+0000\n" +"POT-Creation-Date: 2017-08-17 17:47+0000\n" "PO-Revision-Date: 2016-09-20 12:00+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -18,90 +18,90 @@ msgstr "" "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" -#: plperl.c:405 +#: plperl.c:422 msgid "" "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "" "ЕÑли Ñтот параметр равен true, доверенный и недоверенный код Perl будет " "компилироватьÑÑ Ð² Ñтрогом режиме." -#: plperl.c:419 +#: plperl.c:436 msgid "" "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "" "Код инициализации Perl, который выполнÑетÑÑ Ð¿Ñ€Ð¸ инициализации интерпретатора " "Perl." -#: plperl.c:441 +#: plperl.c:458 msgid "Perl initialization code to execute once when plperl is first used." msgstr "" "Код инициализации Perl, который выполнÑетÑÑ Ð¾Ð´Ð¸Ð½ раз, при первом " "иÑпользовании plperl." -#: plperl.c:449 +#: plperl.c:466 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "" "Код инициализации Perl, который выполнÑетÑÑ Ð¾Ð´Ð¸Ð½ раз, при первом " "иÑпользовании plperlu." -#: plperl.c:646 +#: plperl.c:663 #, c-format msgid "cannot allocate multiple Perl interpreters on this platform" msgstr "на Ñтой платформе Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð¿ÑƒÑтить множеÑтво интерпретаторов Perl" -#: plperl.c:666 plperl.c:841 plperl.c:847 plperl.c:961 plperl.c:973 -#: plperl.c:1016 plperl.c:1037 plperl.c:2080 plperl.c:2189 plperl.c:2256 -#: plperl.c:2318 +#: plperl.c:686 plperl.c:870 plperl.c:876 plperl.c:993 plperl.c:1005 +#: plperl.c:1048 plperl.c:1071 plperl.c:2126 plperl.c:2236 plperl.c:2304 +#: plperl.c:2367 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:667 +#: plperl.c:687 #, c-format msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "при выполнении PostgreSQL::InServer::SPI::bootstrap" -#: plperl.c:842 +#: plperl.c:871 #, c-format msgid "while parsing Perl initialization" msgstr "при разборе параметров инициализации Perl" -#: plperl.c:848 +#: plperl.c:877 #, c-format msgid "while running Perl initialization" msgstr "при выполнении инициализации Perl" -#: plperl.c:962 +#: plperl.c:994 #, c-format msgid "while executing PLC_TRUSTED" msgstr "при выполнении PLC_TRUSTED" -#: plperl.c:974 +#: plperl.c:1006 #, c-format msgid "while executing utf8fix" msgstr "при выполнении utf8fix" -#: plperl.c:1017 +#: plperl.c:1049 #, c-format msgid "while executing plperl.on_plperl_init" msgstr "при выполнении plperl.on_plperl_init" -#: plperl.c:1038 +#: plperl.c:1072 #, c-format msgid "while executing plperl.on_plperlu_init" msgstr "при выполнении plperl.on_plperlu_init" -#: plperl.c:1082 plperl.c:1722 +#: plperl.c:1117 plperl.c:1767 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "Perl-хеш Ñодержит неÑущеÑтвующий Ñтолбец \"%s\"" -#: plperl.c:1167 +#: plperl.c:1205 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "чиÑло размерноÑтей маÑÑива (%d) превышает предел (%d)" -#: plperl.c:1179 plperl.c:1196 +#: plperl.c:1217 plperl.c:1234 #, c-format msgid "" "multidimensional arrays must have array expressions with matching dimensions" @@ -109,80 +109,80 @@ msgstr "" "Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑ€Ð½Ñ‹Ñ… маÑÑивов должны задаватьÑÑ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ ÑоответÑтвующими " "размерноÑÑ‚Ñми" -#: plperl.c:1231 +#: plperl.c:1270 #, c-format msgid "cannot convert Perl array to non-array type %s" msgstr "Perl-маÑÑив Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ в тип не маÑÑива %s" -#: plperl.c:1333 +#: plperl.c:1372 #, c-format msgid "cannot convert Perl hash to non-composite type %s" msgstr "Perl-хеш Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ в не ÑоÑтавной тип %s" -#: plperl.c:1344 +#: plperl.c:1383 #, c-format msgid "" "function returning record called in context that cannot accept type record" msgstr "" "функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, вызвана в контекÑте, не допуÑкающем Ñтот тип" -#: plperl.c:1359 +#: plperl.c:1398 #, c-format msgid "PL/Perl function must return reference to hash or array" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ PL/Perl должна возвращать ÑÑылку на хеш или маÑÑив" -#: plperl.c:1396 +#: plperl.c:1435 #, c-format msgid "lookup failed for type %s" msgstr "найти тип %s не удалоÑÑŒ" -#: plperl.c:1699 +#: plperl.c:1744 #, c-format msgid "$_TD->{new} does not exist" msgstr "$_TD->{new} не ÑущеÑтвует" -#: plperl.c:1703 +#: plperl.c:1748 #, c-format msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new} - не ÑÑылка на хеш" -#: plperl.c:1956 plperl.c:2790 +#: plperl.c:2001 plperl.c:2838 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "функции PL/Perl не могут возвращать тип %s" -#: plperl.c:1969 plperl.c:2835 +#: plperl.c:2014 plperl.c:2883 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "функции PL/Perl не могут принимать тип %s" -#: plperl.c:2085 +#: plperl.c:2131 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "не удалоÑÑŒ получить ÑÑылку на код поÑле компилÑции функции \"%s\"" -#: plperl.c:2177 +#: plperl.c:2224 #, c-format msgid "didn't get a return item from function" msgstr "не удалоÑÑŒ получить возвращаемый Ñлемент от функции" -#: plperl.c:2220 plperl.c:2286 +#: plperl.c:2268 plperl.c:2335 #, c-format msgid "couldn't fetch $_TD" msgstr "не удалоÑÑŒ получить $_TD" -#: plperl.c:2244 plperl.c:2306 +#: plperl.c:2292 plperl.c:2355 #, c-format msgid "didn't get a return item from trigger function" msgstr "не удалоÑÑŒ получить возвращаемый Ñлемент от триггерной функции" -#: plperl.c:2363 +#: plperl.c:2412 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "" "функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтво, вызвана в контекÑте, где ему нет меÑта" -#: plperl.c:2407 +#: plperl.c:2457 #, c-format msgid "" "set-returning PL/Perl function must return reference to array or use " @@ -191,12 +191,12 @@ msgstr "" "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ PL/Perl, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтво, должна возвращать ÑÑылку на маÑÑив " "или вызывать return_next" -#: plperl.c:2521 +#: plperl.c:2571 #, c-format msgid "ignoring modified row in DELETE trigger" msgstr "в триггере DELETE Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½Ð½Ð°Ñ Ñтрока игнорируетÑÑ" -#: plperl.c:2529 +#: plperl.c:2579 #, c-format msgid "" "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" @@ -204,29 +204,29 @@ msgstr "" "результатом триггерной функции PL/Perl должен быть undef, \"SKIP\" или " "\"MODIFY\"" -#: plperl.c:2708 plperl.c:2718 +#: plperl.c:2756 plperl.c:2766 #, c-format msgid "out of memory" msgstr "нехватка памÑти" -#: plperl.c:2782 +#: plperl.c:2830 #, c-format msgid "trigger functions can only be called as triggers" msgstr "триггерные функции могут вызыватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в триггерах" -#: plperl.c:3121 +#: plperl.c:3171 #, c-format msgid "query result has too many rows to fit in a Perl array" msgstr "" "результат запроÑа Ñодержит Ñлишком много Ñтрок Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ в маÑÑиве Perl" -#: plperl.c:3166 +#: plperl.c:3241 #, c-format msgid "cannot use return_next in a non-SETOF function" msgstr "" "return_next можно иÑпользовать только в функциÑÑ…, возвращающих множеÑтва" -#: plperl.c:3220 +#: plperl.c:3301 #, c-format msgid "" "SETOF-composite-returning PL/Perl function must call return_next with " @@ -235,17 +235,17 @@ msgstr "" "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ PL/Perl, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ ÑоÑтавное множеÑтво, должна вызывать " "return_next Ñо ÑÑылкой на хеш" -#: plperl.c:3948 +#: plperl.c:4075 #, c-format msgid "PL/Perl function \"%s\"" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ PL/Perl \"%s\"" -#: plperl.c:3960 +#: plperl.c:4087 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "компилÑÑ†Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ PL/Perl \"%s\"" -#: plperl.c:3969 +#: plperl.c:4096 #, c-format msgid "PL/Perl anonymous code block" msgstr "анонимный блок кода PL/Perl" diff --git a/src/pl/plpgsql/src/po/es.po b/src/pl/plpgsql/src/po/es.po index cc584f69b0..896971169b 100644 --- a/src/pl/plpgsql/src/po/es.po +++ b/src/pl/plpgsql/src/po/es.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: plpgsql (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:07+0000\n" -"PO-Revision-Date: 2016-05-25 11:54-0500\n" +"POT-Creation-Date: 2017-08-27 21:47+0000\n" +"PO-Revision-Date: 2017-08-28 11:38+0200\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" "Language: es\n" @@ -23,93 +23,93 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 1.8.7\n" -#: pl_comp.c:432 pl_handler.c:448 +#: pl_comp.c:430 pl_handler.c:450 #, c-format msgid "PL/pgSQL functions cannot accept type %s" msgstr "las funciones PL/pgSQL no pueden aceptar el tipo %s" -#: pl_comp.c:513 +#: pl_comp.c:511 #, c-format msgid "could not determine actual return type for polymorphic function \"%s\"" msgstr "no se pudo determinar el verdadero tipo de resultado para la función polimórfica «%s»" -#: pl_comp.c:543 +#: pl_comp.c:541 #, c-format msgid "trigger functions can only be called as triggers" msgstr "las funciones de disparador sólo pueden ser invocadas como disparadores" -#: pl_comp.c:547 pl_handler.c:433 +#: pl_comp.c:545 pl_handler.c:435 #, c-format msgid "PL/pgSQL functions cannot return type %s" msgstr "las funciones PL/pgSQL no pueden retornar el tipo %s" -#: pl_comp.c:588 +#: pl_comp.c:586 #, c-format msgid "trigger functions cannot have declared arguments" msgstr "las funciones de disparador no pueden tener argumentos declarados" -#: pl_comp.c:589 +#: pl_comp.c:587 #, c-format msgid "The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV instead." msgstr "Los argumentos del disparador pueden accederse usando TG_NARGS y TG_ARGV." -#: pl_comp.c:691 +#: pl_comp.c:689 #, c-format msgid "event trigger functions cannot have declared arguments" msgstr "las funciones de disparador por eventos no pueden tener argumentos declarados" -#: pl_comp.c:944 +#: pl_comp.c:940 #, c-format msgid "compilation of PL/pgSQL function \"%s\" near line %d" msgstr "compilación de la función PL/pgSQL «%s» cerca de la línea %d" -#: pl_comp.c:967 +#: pl_comp.c:963 #, c-format msgid "parameter name \"%s\" used more than once" msgstr "el nombre de parámetro «%s» fue usado más de una vez" -#: pl_comp.c:1077 +#: pl_comp.c:1073 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "la referencia a la columna «%s» es ambigua" -#: pl_comp.c:1079 +#: pl_comp.c:1075 #, c-format msgid "It could refer to either a PL/pgSQL variable or a table column." msgstr "Podría referirse tanto a una variable PL/pgSQL como a una columna de una tabla." -#: pl_comp.c:1259 pl_comp.c:1287 pl_exec.c:4395 pl_exec.c:4744 pl_exec.c:4829 -#: pl_exec.c:4920 +#: pl_comp.c:1255 pl_comp.c:1283 pl_exec.c:4393 pl_exec.c:4742 pl_exec.c:4827 +#: pl_exec.c:4918 #, c-format msgid "record \"%s\" has no field \"%s\"" msgstr "el registro «%s» no tiene un campo «%s»" -#: pl_comp.c:1818 +#: pl_comp.c:1814 #, c-format msgid "relation \"%s\" does not exist" msgstr "no existe la relación «%s»" -#: pl_comp.c:1927 +#: pl_comp.c:1923 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "la variable «%s» tiene pseudotipo %s" -#: pl_comp.c:1994 +#: pl_comp.c:1990 #, c-format msgid "relation \"%s\" is not a table" msgstr "la relación «%s» no es una tabla" -#: pl_comp.c:2154 +#: pl_comp.c:2150 #, c-format msgid "type \"%s\" is only a shell" msgstr "el tipo «%s» está inconcluso" -#: pl_comp.c:2243 pl_comp.c:2296 +#: pl_comp.c:2244 pl_comp.c:2297 #, c-format msgid "unrecognized exception condition \"%s\"" msgstr "no se reconoce la condición de excepción «%s»" -#: pl_comp.c:2503 +#: pl_comp.c:2504 #, c-format msgid "could not determine actual argument type for polymorphic function \"%s\"" msgstr "no se pudo determinar el verdadero tipo de argumento para la función polimórfica «%s»" @@ -245,17 +245,17 @@ msgstr "el valor BY de un ciclo FOR no puede ser null" msgid "BY value of FOR loop must be greater than zero" msgstr "el valor BY de un ciclo FOR debe ser mayor que cero" -#: pl_exec.c:2153 pl_exec.c:3912 +#: pl_exec.c:2153 pl_exec.c:3910 #, c-format msgid "cursor \"%s\" already in use" msgstr "el cursor «%s» ya está en uso" -#: pl_exec.c:2176 pl_exec.c:3974 +#: pl_exec.c:2176 pl_exec.c:3972 #, c-format msgid "arguments given for cursor without arguments" msgstr "se dieron argumentos a un cursor sin argumentos" -#: pl_exec.c:2195 pl_exec.c:3993 +#: pl_exec.c:2195 pl_exec.c:3991 #, c-format msgid "arguments required for cursor" msgstr "se requieren argumentos para el cursor" @@ -290,7 +290,7 @@ msgstr "la variable de bucle FOREACH no debe ser de tipo array" msgid "cannot return non-composite value from function returning composite type" msgstr "no se puede retornar un valor no-compuesto desde una función que retorne tipos compuestos" -#: pl_exec.c:2648 pl_gram.y:3161 +#: pl_exec.c:2648 pl_gram.y:3190 #, c-format msgid "cannot use RETURN NEXT in a non-SETOF function" msgstr "no se puede usar RETURN NEXT en una función que no es SETOF" @@ -300,14 +300,14 @@ msgstr "no se puede usar RETURN NEXT en una función que no es SETOF" msgid "wrong result type supplied in RETURN NEXT" msgstr "se pasó un tipo incorrecto de resultado a RETURN NEXT" -#: pl_exec.c:2711 pl_exec.c:4382 pl_exec.c:4711 pl_exec.c:4737 pl_exec.c:4803 -#: pl_exec.c:4822 pl_exec.c:4890 pl_exec.c:4913 +#: pl_exec.c:2711 pl_exec.c:4380 pl_exec.c:4709 pl_exec.c:4735 pl_exec.c:4801 +#: pl_exec.c:4820 pl_exec.c:4888 pl_exec.c:4911 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "el registro «%s» no ha sido asignado aún" -#: pl_exec.c:2713 pl_exec.c:4384 pl_exec.c:4713 pl_exec.c:4739 pl_exec.c:4805 -#: pl_exec.c:4824 pl_exec.c:4892 pl_exec.c:4915 +#: pl_exec.c:2713 pl_exec.c:4382 pl_exec.c:4711 pl_exec.c:4737 pl_exec.c:4803 +#: pl_exec.c:4822 pl_exec.c:4890 pl_exec.c:4913 #, c-format msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "La estructura de fila de un registro aún no asignado no está determinado." @@ -322,7 +322,7 @@ msgstr "se pasó un tipo de registro incorrecto a RETURN NEXT" msgid "RETURN NEXT must have a parameter" msgstr "RETURN NEXT debe tener un parámetro" -#: pl_exec.c:2865 pl_gram.y:3223 +#: pl_exec.c:2865 pl_gram.y:3252 #, c-format msgid "cannot use RETURN QUERY in a non-SETOF function" msgstr "no se puede usar RETURN QUERY en una función que no ha sido declarada SETOF" @@ -356,124 +356,124 @@ msgstr "%s" msgid "assertion failed" msgstr "aseveración falló" -#: pl_exec.c:3418 pl_exec.c:3562 pl_exec.c:3751 +#: pl_exec.c:3416 pl_exec.c:3560 pl_exec.c:3749 #, c-format msgid "cannot COPY to/from client in PL/pgSQL" msgstr "no se puede ejecutar COPY desde/a un cliente en PL/pgSQL" -#: pl_exec.c:3422 pl_exec.c:3566 pl_exec.c:3755 +#: pl_exec.c:3420 pl_exec.c:3564 pl_exec.c:3753 #, c-format msgid "cannot begin/end transactions in PL/pgSQL" msgstr "no se pueden iniciar o terminar transacciones en PL/pgSQL" -#: pl_exec.c:3423 pl_exec.c:3567 pl_exec.c:3756 +#: pl_exec.c:3421 pl_exec.c:3565 pl_exec.c:3754 #, c-format msgid "Use a BEGIN block with an EXCEPTION clause instead." msgstr "Utilice un bloque BEGIN con una cláusula EXCEPTION." -#: pl_exec.c:3590 pl_exec.c:3780 +#: pl_exec.c:3588 pl_exec.c:3778 #, c-format msgid "INTO used with a command that cannot return data" msgstr "INTO es utilizado con una orden que no puede retornar datos" -#: pl_exec.c:3618 pl_exec.c:3808 +#: pl_exec.c:3616 pl_exec.c:3806 #, c-format msgid "query returned no rows" msgstr "la consulta no regresó filas" -#: pl_exec.c:3637 pl_exec.c:3827 +#: pl_exec.c:3635 pl_exec.c:3825 #, c-format msgid "query returned more than one row" msgstr "la consulta regresó más de una fila" -#: pl_exec.c:3654 +#: pl_exec.c:3652 #, c-format msgid "query has no destination for result data" msgstr "la consulta no tiene un destino para los datos de resultado" -#: pl_exec.c:3655 +#: pl_exec.c:3653 #, c-format msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "Si quiere descartar los resultados de un SELECT, utilice PERFORM." -#: pl_exec.c:3687 pl_exec.c:7128 +#: pl_exec.c:3685 pl_exec.c:7130 #, c-format msgid "query string argument of EXECUTE is null" msgstr "el argumento de consulta a ejecutar en EXECUTE es null" -#: pl_exec.c:3743 +#: pl_exec.c:3741 #, c-format msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "no está implementado EXECUTE de un SELECT ... INTO" -#: pl_exec.c:3744 +#: pl_exec.c:3742 #, c-format msgid "You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS instead." msgstr "Puede desear usar EXECUTE ... INTO o EXECUTE CREATE TABLE ... AS en su lugar." -#: pl_exec.c:4056 pl_exec.c:4148 +#: pl_exec.c:4054 pl_exec.c:4146 #, c-format msgid "cursor variable \"%s\" is null" msgstr "variable cursor «%s» es null" -#: pl_exec.c:4063 pl_exec.c:4155 +#: pl_exec.c:4061 pl_exec.c:4153 #, c-format msgid "cursor \"%s\" does not exist" msgstr "no existe el cursor «%s»" -#: pl_exec.c:4077 +#: pl_exec.c:4075 #, c-format msgid "relative or absolute cursor position is null" msgstr "la posición relativa o absoluta del cursor es null" -#: pl_exec.c:4257 +#: pl_exec.c:4255 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "no puede asignarse un valor null a la variable «%s» que fue declarada NOT NULL" -#: pl_exec.c:4326 +#: pl_exec.c:4324 #, c-format msgid "cannot assign non-composite value to a row variable" msgstr "no se puede asignar un valor no compuesto a una variable de tipo row" -#: pl_exec.c:4350 +#: pl_exec.c:4348 #, c-format msgid "cannot assign non-composite value to a record variable" msgstr "no se puede asignar un valor no compuesto a una variable de tipo record" -#: pl_exec.c:4493 +#: pl_exec.c:4491 #, 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)" -#: pl_exec.c:4525 +#: pl_exec.c:4523 #, c-format msgid "subscripted object is not an array" msgstr "el objeto al que se le puso un subíndice no es un array" -#: pl_exec.c:4562 +#: pl_exec.c:4560 #, c-format msgid "array subscript in assignment must not be null" msgstr "subíndice de array en asignación no puede ser null" -#: pl_exec.c:5029 +#: pl_exec.c:5027 #, c-format msgid "query \"%s\" did not return data" msgstr "la consulta «%s» no retornó datos" -#: pl_exec.c:5037 +#: pl_exec.c:5035 #, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" msgstr[0] "la consulta «%s» retornó %d columna" msgstr[1] "la consulta «%s» retornó %d columnas" -#: pl_exec.c:5064 +#: pl_exec.c:5062 #, c-format msgid "query \"%s\" returned more than one row" msgstr "la consulta «%s» retornó más de una fila" -#: pl_exec.c:5128 +#: pl_exec.c:5126 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "la consulta «%s» no es una orden SELECT" @@ -510,320 +510,317 @@ msgstr "sentencia SQL" msgid "FOR over EXECUTE statement" msgstr "bucle FOR en torno a una sentencia EXECUTE" -#: pl_gram.y:473 +#: pl_gram.y:474 #, c-format msgid "block label must be placed before DECLARE, not after" msgstr "etiqueta de bloque debe estar antes de DECLARE, no después" -#: pl_gram.y:493 +#: pl_gram.y:494 #, c-format msgid "collations are not supported by type %s" msgstr "los ordenamientos (collation) no están soportados por el tipo %s" -#: pl_gram.y:508 +#: pl_gram.y:509 #, c-format msgid "row or record variable cannot be CONSTANT" msgstr "variable de tipo row o record no puede ser CONSTANT" -#: pl_gram.y:518 +#: pl_gram.y:519 #, c-format msgid "row or record variable cannot be NOT NULL" msgstr "variable de tipo row o record no puede ser NOT NULL" -#: pl_gram.y:529 +#: pl_gram.y:530 #, c-format msgid "default value for row or record variable is not supported" msgstr "el valor por omisión de una variable de tipo row o record no está soportado" -#: pl_gram.y:674 pl_gram.y:689 pl_gram.y:715 +#: pl_gram.y:675 pl_gram.y:690 pl_gram.y:716 #, c-format msgid "variable \"%s\" does not exist" msgstr "no existe la variable «%s»" -#: pl_gram.y:733 pl_gram.y:761 +#: pl_gram.y:734 pl_gram.y:762 msgid "duplicate declaration" msgstr "declaración duplicada" -#: pl_gram.y:744 pl_gram.y:772 +#: pl_gram.y:745 pl_gram.y:773 #, c-format msgid "variable \"%s\" shadows a previously defined variable" msgstr "la variable «%s» oculta una variable definida anteriormente" -#: pl_gram.y:951 +#: pl_gram.y:952 #, c-format msgid "diagnostics item %s is not allowed in GET STACKED DIAGNOSTICS" msgstr "elemento de diagnóstico %s no se permite en GET STACKED DIAGNOSTICS" -#: pl_gram.y:969 +#: pl_gram.y:970 #, c-format msgid "diagnostics item %s is not allowed in GET CURRENT DIAGNOSTICS" msgstr "elemento de diagnóstico %s no se permite en GET STACKED DIAGNOSTICS" -#: pl_gram.y:1067 +#: pl_gram.y:1068 msgid "unrecognized GET DIAGNOSTICS item" msgstr "elemento de GET DIAGNOSTICS no reconocido" -#: pl_gram.y:1078 pl_gram.y:3410 +#: pl_gram.y:1079 pl_gram.y:3439 #, c-format msgid "\"%s\" is not a scalar variable" msgstr "«%s» no es una variable escalar" -#: pl_gram.y:1330 pl_gram.y:1524 +#: pl_gram.y:1331 pl_gram.y:1525 #, c-format msgid "loop variable of loop over rows must be a record or row variable or list of scalar variables" msgstr "la variable de bucle de un bucle sobre filas debe ser una variable de tipo record o row o una lista de variables escalares" -#: pl_gram.y:1364 +#: pl_gram.y:1365 #, c-format msgid "cursor FOR loop must have only one target variable" msgstr "un bucle FOR de un cursor debe tener sólo una variable de destino" -#: pl_gram.y:1371 +#: pl_gram.y:1372 #, c-format msgid "cursor FOR loop must use a bound cursor variable" msgstr "un bucle FOR en torno a un cursor debe usar un cursor enlazado (bound)" -#: pl_gram.y:1455 +#: pl_gram.y:1456 #, c-format msgid "integer FOR loop must have only one target variable" msgstr "un bucle FOR de un número entero debe tener sólo una variable de destino" -#: pl_gram.y:1491 +#: pl_gram.y:1492 #, c-format msgid "cannot specify REVERSE in query FOR loop" msgstr "no se puede especificar REVERSE en un bucle FOR de una consulta" -#: pl_gram.y:1638 +#: pl_gram.y:1639 #, c-format msgid "loop variable of FOREACH must be a known variable or list of variables" msgstr "la variable de bucle de FOREACH debe ser una variable conocida o una lista de variables conocidas" -#: pl_gram.y:1679 +#: pl_gram.y:1680 #, c-format msgid "there is no label \"%s\" attached to any block or loop enclosing this statement" msgstr "ningún bloque o bucle que contenga esta sentencia tiene una etiqueta «%s»" -#: pl_gram.y:1687 +#: pl_gram.y:1688 #, c-format msgid "block label \"%s\" cannot be used in CONTINUE" msgstr "la etiqueta de bloque «%s» no puede usarse en CONTINUE" -#: pl_gram.y:1702 +#: pl_gram.y:1703 #, c-format msgid "EXIT cannot be used outside a loop, unless it has a label" msgstr "EXIT no puede usarse fuera de un bucle, a menos que tenga una etiqueta" -#: pl_gram.y:1703 +#: pl_gram.y:1704 #, c-format msgid "CONTINUE cannot be used outside a loop" msgstr "CONTINUE no puede usarse fuera de un bucle" -#: pl_gram.y:1727 pl_gram.y:1764 pl_gram.y:1812 pl_gram.y:2863 pl_gram.y:2945 -#: pl_gram.y:3056 pl_gram.y:3812 +#: pl_gram.y:1728 pl_gram.y:1765 pl_gram.y:1813 pl_gram.y:2889 pl_gram.y:2974 +#: pl_gram.y:3085 pl_gram.y:3841 msgid "unexpected end of function definition" msgstr "fin inesperado de la definición de la función" -#: pl_gram.y:1832 pl_gram.y:1856 pl_gram.y:1872 pl_gram.y:1878 pl_gram.y:1992 -#: pl_gram.y:2000 pl_gram.y:2014 pl_gram.y:2109 pl_gram.y:2290 pl_gram.y:2384 -#: pl_gram.y:2535 pl_gram.y:3653 pl_gram.y:3714 pl_gram.y:3793 +#: pl_gram.y:1833 pl_gram.y:1857 pl_gram.y:1873 pl_gram.y:1879 pl_gram.y:1997 +#: pl_gram.y:2005 pl_gram.y:2019 pl_gram.y:2114 pl_gram.y:2295 pl_gram.y:2389 +#: pl_gram.y:2541 pl_gram.y:3682 pl_gram.y:3743 pl_gram.y:3822 msgid "syntax error" msgstr "error de sintaxis" -#: pl_gram.y:1860 pl_gram.y:1862 pl_gram.y:2294 pl_gram.y:2296 +#: pl_gram.y:1861 pl_gram.y:1863 pl_gram.y:2299 pl_gram.y:2301 msgid "invalid SQLSTATE code" msgstr "código SQLSTATE no válido" -#: pl_gram.y:2056 +#: pl_gram.y:2061 msgid "syntax error, expected \"FOR\"" msgstr "error de sintaxis, se esperaba «FOR»" -#: pl_gram.y:2118 +#: pl_gram.y:2123 #, c-format msgid "FETCH statement cannot return multiple rows" msgstr "la sentencia FETCH no puede retornar múltiples filas" -#: pl_gram.y:2174 +#: pl_gram.y:2179 #, c-format msgid "cursor variable must be a simple variable" msgstr "variable de cursor debe ser una variable simple" -#: pl_gram.y:2180 +#: pl_gram.y:2185 #, c-format msgid "variable \"%s\" must be of type cursor or refcursor" msgstr "la variable «%s» debe ser de tipo cursor o refcursor" -#: pl_gram.y:2506 pl_gram.y:2517 +#: pl_gram.y:2512 pl_gram.y:2523 #, c-format msgid "\"%s\" is not a known variable" msgstr "«%s» no es una variable conocida" -#: pl_gram.y:2621 pl_gram.y:2631 pl_gram.y:2787 +#: pl_gram.y:2627 pl_gram.y:2637 pl_gram.y:2793 msgid "mismatched parentheses" msgstr "no coinciden los paréntesis" -#: pl_gram.y:2635 +#: pl_gram.y:2641 #, c-format msgid "missing \"%s\" at end of SQL expression" msgstr "falta «%s» al final de la expresión SQL" -#: pl_gram.y:2641 +#: pl_gram.y:2647 #, c-format msgid "missing \"%s\" at end of SQL statement" msgstr "falta «%s» al final de la sentencia SQL" -#: pl_gram.y:2658 +#: pl_gram.y:2664 msgid "missing expression" msgstr "expresión faltante" -#: pl_gram.y:2660 +#: pl_gram.y:2666 msgid "missing SQL statement" msgstr "sentencia SQL faltante" -#: pl_gram.y:2789 +#: pl_gram.y:2795 msgid "incomplete data type declaration" msgstr "declaración de tipo de dato incompleta" -#: pl_gram.y:2812 +#: pl_gram.y:2818 msgid "missing data type declaration" msgstr "declaración de tipo de dato faltante" -#: pl_gram.y:2868 +#: pl_gram.y:2897 msgid "INTO specified more than once" msgstr "INTO fue especificado más de una vez" -#: pl_gram.y:3037 +#: pl_gram.y:3066 msgid "expected FROM or IN" msgstr "se espera FROM o IN" -#: pl_gram.y:3097 +#: pl_gram.y:3126 #, c-format msgid "RETURN cannot have a parameter in function returning set" msgstr "RETURN no puede tener un parámetro en una función que retorna un conjunto" -#: pl_gram.y:3098 +#: pl_gram.y:3127 #, c-format msgid "Use RETURN NEXT or RETURN QUERY." msgstr "Use RETURN NEXT o RETURN QUERY." -#: pl_gram.y:3106 +#: pl_gram.y:3135 #, c-format msgid "RETURN cannot have a parameter in function with OUT parameters" msgstr "RETURN no puede tener parámetros en una función con parámetros OUT" -#: pl_gram.y:3115 +#: pl_gram.y:3144 #, c-format msgid "RETURN cannot have a parameter in function returning void" msgstr "RETURN no puede tener parámetro en una función que retorna void" -#: pl_gram.y:3175 +#: pl_gram.y:3204 #, c-format msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" msgstr "RETURN NEXT no puede tener parámetros en una función con parámetros OUT" -#: pl_gram.y:3279 +#: pl_gram.y:3308 #, c-format msgid "\"%s\" is declared CONSTANT" msgstr "«%s» esta declarada como CONSTANT" -#: pl_gram.y:3341 pl_gram.y:3353 +#: pl_gram.y:3370 pl_gram.y:3382 #, c-format msgid "record or row variable cannot be part of multiple-item INTO list" msgstr "una variable de tipo record o row no puede ser parte de una lista INTO de múltiples elementos" -#: pl_gram.y:3398 +#: pl_gram.y:3427 #, c-format msgid "too many INTO variables specified" msgstr "se especificaron demasiadas variables INTO" -#: pl_gram.y:3606 +#: pl_gram.y:3635 #, c-format msgid "end label \"%s\" specified for unlabelled block" msgstr "etiqueta de término «%s» especificada para un bloque sin etiqueta" -#: pl_gram.y:3613 +#: pl_gram.y:3642 #, c-format msgid "end label \"%s\" differs from block's label \"%s\"" msgstr "etiqueta de término «%s» difiere de la etiqueta de bloque «%s»" -#: pl_gram.y:3648 +#: pl_gram.y:3677 #, c-format msgid "cursor \"%s\" has no arguments" msgstr "el cursor «%s» no tiene argumentos" -#: pl_gram.y:3662 +#: pl_gram.y:3691 #, c-format msgid "cursor \"%s\" has arguments" msgstr "el cursor «%s» tiene argumentos" -#: pl_gram.y:3704 +#: pl_gram.y:3733 #, c-format msgid "cursor \"%s\" has no argument named \"%s\"" msgstr "el cursor «%s» no tiene un argumento llamado «%s»" -#: pl_gram.y:3724 +#: pl_gram.y:3753 #, c-format msgid "value for parameter \"%s\" of cursor \"%s\" specified more than once" msgstr "el valor para el parámetro «%s» del cursor «%s» fue especificado más de una vez" -#: pl_gram.y:3749 +#: pl_gram.y:3778 #, c-format msgid "not enough arguments for cursor \"%s\"" msgstr "no hay suficientes argumentos para el cursor «%s»" -#: pl_gram.y:3756 +#: pl_gram.y:3785 #, c-format msgid "too many arguments for cursor \"%s\"" msgstr "demasiados argumentos para el cursor «%s»" -#: pl_gram.y:3844 +#: pl_gram.y:3873 msgid "unrecognized RAISE statement option" msgstr "no se reconoce la opción de sentencia RAISE" -#: pl_gram.y:3848 +#: pl_gram.y:3877 msgid "syntax error, expected \"=\"" msgstr "error de sintaxis, se esperaba «=»" -#: pl_gram.y:3889 +#: pl_gram.y:3918 #, c-format msgid "too many parameters specified for RAISE" msgstr "se especificaron demasiados parámetros a RAISE" -#: pl_gram.y:3893 +#: pl_gram.y:3922 #, c-format msgid "too few parameters specified for RAISE" msgstr "se especificaron muy pocos parámetros a RAISE" -#: pl_handler.c:149 +#: pl_handler.c:151 msgid "Sets handling of conflicts between PL/pgSQL variable names and table column names." msgstr "Determina el manejo de conflictos entre nombres de variables PL/pgSQL y nombres de columnas de tablas." -#: pl_handler.c:158 +#: pl_handler.c:160 msgid "Print information about parameters in the DETAIL part of the error messages generated on INTO ... STRICT failures." msgstr "Imprimir información de parámetros en la parte DETALLE de los mensajes de error generados por fallos en INTO ... STRICT." -#: pl_handler.c:166 +#: pl_handler.c:168 msgid "Perform checks given in ASSERT statements." msgstr "Ejecuta las verificaciones en sentencias ASSERT." -#: pl_handler.c:174 +#: pl_handler.c:176 msgid "List of programming constructs that should produce a warning." msgstr "Listado de estructuras de programación que deben dar una advertencia." -#: pl_handler.c:184 +#: pl_handler.c:186 msgid "List of programming constructs that should produce an error." msgstr "Listado de estructuras de programación que deben dar un error." #. translator: %s is typically the translation of "syntax error" -#: pl_scanner.c:621 +#: pl_scanner.c:622 #, 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" -#: pl_scanner.c:637 +#: pl_scanner.c:638 #, c-format msgid "%s at or near \"%s\"" msgstr "%s en o cerca de «%s»" - -#~ msgid "label does not exist" -#~ msgstr "la etiqueta no existe" diff --git a/src/pl/plpgsql/src/po/ja.po b/src/pl/plpgsql/src/po/ja.po index efb8aa9a53..f189c96622 100644 --- a/src/pl/plpgsql/src/po/ja.po +++ b/src/pl/plpgsql/src/po/ja.po @@ -1,10 +1,10 @@ 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 13:02+0900\n" +"POT-Creation-Date: 2017-04-04 11:47+0900\n" "PO-Revision-Date: 2013-08-18 13:04+0900\n" -"Last-Translator: HOTTA Michihde \n" +"Last-Translator: Daisuke Higuchi \n" "Language-Team: Japan PostgreSQL Users Group \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -14,785 +14,800 @@ msgstr "" "X-Poedit-Country: JAPAN\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: pl_comp.c:432 pl_handler.c:276 +#: pl_comp.c:430 pl_handler.c:450 #, c-format msgid "PL/pgSQL functions cannot accept type %s" msgstr "PL/pgSQL 関数ã§ã¯ %s åž‹ã¯æŒ‡å®šã§ãã¾ã›ã‚“" -#: pl_comp.c:513 +#: pl_comp.c:511 #, c-format msgid "could not determine actual return type for polymorphic function \"%s\"" msgstr "関数 \"%s\" ãŒå¤šæ§˜ãªå½¢ã‚’æŒã¤ãŸã‚ã€å®Ÿéš›ã®æˆ»ã‚Šå€¤ã®åž‹ã‚’特定ã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: pl_comp.c:543 +#: pl_comp.c:541 #, c-format msgid "trigger functions can only be called as triggers" msgstr "トリガー関数ã¯ãƒˆãƒªã‚¬ãƒ¼ã¨ã—ã¦ã®ã¿ã‚³ãƒ¼ãƒ«ã§ãã¾ã™" -#: pl_comp.c:547 pl_handler.c:261 +#: pl_comp.c:545 pl_handler.c:435 #, c-format msgid "PL/pgSQL functions cannot return type %s" msgstr "PL/pgSQL 関数㯠%s 型を返ã›ã¾ã›ã‚“" -#: pl_comp.c:590 +#: pl_comp.c:586 #, c-format msgid "trigger functions cannot have declared arguments" msgstr "トリガー関数ã«ã¯å¼•数を宣言ã§ãã¾ã›ã‚“" -#: pl_comp.c:591 +#: pl_comp.c:587 #, c-format msgid "The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV instead." msgstr "ãã®ä»£ã‚りã€ãƒˆãƒªã‚¬ãƒ¼ã®å¼•æ•°ã«ã¯ TG_NARGS 㨠TG_ARGV を通ã—ã¦ã®ã¿ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™" -#: pl_comp.c:693 +#: pl_comp.c:689 #, c-format -#| msgid "trigger functions cannot have declared arguments" msgid "event trigger functions cannot have declared arguments" msgstr "イベントトリガー関数ã«ã¯å¼•数を宣言ã§ãã¾ã›ã‚“" -#: pl_comp.c:950 +#: pl_comp.c:940 #, c-format msgid "compilation of PL/pgSQL function \"%s\" near line %d" msgstr "PL/pgSQL 関数 \"%s\" ã® %d 行目付近ã§ã®ã‚³ãƒ³ãƒ‘イル" -#: pl_comp.c:973 +#: pl_comp.c:963 #, c-format msgid "parameter name \"%s\" used more than once" msgstr "パラメータ \"%s\" ãŒè¤‡æ•°æŒ‡å®šã•れã¾ã—ãŸ" -#: pl_comp.c:1083 +#: pl_comp.c:1073 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "列å‚ç…§\"%s\"ã¯æ›–昧ã§ã™" -#: pl_comp.c:1085 +#: pl_comp.c:1075 #, c-format msgid "It could refer to either a PL/pgSQL variable or a table column." msgstr "PL/pgSQL変数もã—ãã¯ãƒ†ãƒ¼ãƒ–ルã®ã‚«ãƒ©ãƒ åã„ãšã‚Œã‹ã‚’å‚ç…§ã—ã¦ã„ãŸå¯èƒ½æ€§ãŒã‚りã¾ã™" -#: pl_comp.c:1265 pl_comp.c:1293 pl_exec.c:4107 pl_exec.c:4462 pl_exec.c:4547 -#: pl_exec.c:4638 +#: pl_comp.c:1255 pl_comp.c:1283 pl_exec.c:4393 pl_exec.c:4742 pl_exec.c:4827 +#: pl_exec.c:4918 #, c-format msgid "record \"%s\" has no field \"%s\"" msgstr "レコード \"%s\" ã«ã¯åˆ— \"%s\" ã¯ã‚りã¾ã›ã‚“" -#: pl_comp.c:1824 +#: pl_comp.c:1814 #, c-format msgid "relation \"%s\" does not exist" msgstr "リレーション \"%s\" ãŒã‚りã¾ã›ã‚“" -#: pl_comp.c:1933 +#: pl_comp.c:1923 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "変数 \"%s\" ã®åž‹ã¯æ“¬ä¼¼ã‚¿ã‚¤ãƒ— %s ã§ã™" -#: pl_comp.c:1999 +#: pl_comp.c:1990 #, c-format msgid "relation \"%s\" is not a table" msgstr "リレーション \"%s\" ã¯ãƒ†ãƒ¼ãƒ–ルã§ã¯ã‚りã¾ã›ã‚“" -#: pl_comp.c:2159 +#: pl_comp.c:2150 #, c-format msgid "type \"%s\" is only a shell" msgstr "åž‹ \"%s\" ã¯ã‚·ã‚§ãƒ«ã§ã®ã¿ä½¿ãˆã¾ã™" -#: pl_comp.c:2233 pl_comp.c:2286 +#: pl_comp.c:2244 pl_comp.c:2297 #, c-format msgid "unrecognized exception condition \"%s\"" msgstr "例外æ¡ä»¶ \"%s\" ãŒèªè­˜ã§ãã¾ã›ã‚“" -#: pl_comp.c:2444 +#: pl_comp.c:2504 #, c-format msgid "could not determine actual argument type for polymorphic function \"%s\"" msgstr "関数 \"%s\" ãŒå¤šæ§˜ãªå½¢ã‚’æŒã¤ãŸã‚ã€å®Ÿéš›ã®å¼•æ•°ã®åž‹ã‚’特定ã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: pl_exec.c:254 pl_exec.c:514 pl_exec.c:793 +#: pl_exec.c:324 pl_exec.c:612 pl_exec.c:872 msgid "during initialization of execution state" msgstr "実行状態ã®åˆæœŸåŒ–中ã«" -#: pl_exec.c:261 +#: pl_exec.c:331 msgid "while storing call arguments into local variables" msgstr "å¼•æ•°ã‚’ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã«æ ¼ç´ã™ã‚‹éš›ã«" -#: pl_exec.c:303 pl_exec.c:671 +#: pl_exec.c:416 pl_exec.c:760 msgid "during function entry" msgstr "関数登録ã®éš›ã«" -#: pl_exec.c:334 pl_exec.c:702 pl_exec.c:834 -#, c-format -msgid "CONTINUE cannot be used outside a loop" -msgstr "CONTINUE ã¯ãƒ«ãƒ¼ãƒ—ã®å¤–ã§ã¯ä½¿ãˆã¾ã›ã‚“" - -#: pl_exec.c:338 +#: pl_exec.c:441 #, c-format msgid "control reached end of function without RETURN" msgstr "RETURN ãŒç¾ã‚Œã‚‹å‰ã«ã€åˆ¶å¾¡ãŒé–¢æ•°ã®çµ‚ã‚りã«é”ã—ã¾ã—ãŸ" -#: pl_exec.c:345 +#: pl_exec.c:448 msgid "while casting return value to function's return type" msgstr "æˆ»ã‚Šå€¤ã‚’é–¢æ•°ã®æˆ»ã‚Šå€¤ã®åž‹ã¸ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹éš›ã«" -#: pl_exec.c:358 pl_exec.c:2820 +#: pl_exec.c:461 pl_exec.c:2938 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "値ã®ã‚»ãƒƒãƒˆã‚’å—ã‘付ã‘ãªã„よã†ãªæ–‡è„ˆã§ã€ã‚»ãƒƒãƒˆå€¤ã‚’è¿”ã™é–¢æ•°ãŒå‘¼ã°ã‚Œã¾ã—ãŸ" -#: pl_exec.c:396 pl_exec.c:2663 +#: pl_exec.c:499 pl_exec.c:2779 msgid "returned record type does not match expected record type" msgstr "戻りレコードã®åž‹ãŒæœŸå¾…ã™ã‚‹ãƒ¬ã‚³ãƒ¼ãƒ‰ã®åž‹ã¨ä¸€è‡´ã—ã¾ã›ã‚“" -#: pl_exec.c:456 pl_exec.c:710 pl_exec.c:842 +#: pl_exec.c:554 pl_exec.c:789 pl_exec.c:907 msgid "during function exit" msgstr "関数を抜ã‘ã‚‹éš›ã«" -#: pl_exec.c:706 pl_exec.c:838 +#: pl_exec.c:785 pl_exec.c:903 #, c-format msgid "control reached end of trigger procedure without RETURN" msgstr "RETURN ãŒç¾ã‚Œã‚‹å‰ã«ã€åˆ¶å¾¡ãŒãƒˆãƒªã‚¬ãƒ¼æ‰‹ç¶šãã®çµ‚ã‚りã«é”ã—ã¾ã—ãŸ" -#: pl_exec.c:715 +#: pl_exec.c:794 #, c-format msgid "trigger procedure cannot return a set" msgstr "トリガー手続ãã¯ã‚»ãƒƒãƒˆã‚’è¿”ã™ã“ã¨ãŒã§ãã¾ã›ã‚“" -#: pl_exec.c:737 +#: pl_exec.c:816 msgid "returned row structure does not match the structure of the triggering table" msgstr "è¿”ã•れãŸè¡Œã®æ§‹é€ ãŒã€ãƒˆãƒªã‚¬ãƒ¼ã—ã¦ã„ã‚‹ãƒ†ãƒ¼ãƒ–ãƒ«ã®æ§‹é€ ã¨ãƒžãƒƒãƒã—ã¾ã›ã‚“" -#: pl_exec.c:893 +#: pl_exec.c:954 #, c-format msgid "PL/pgSQL function %s line %d %s" msgstr "PL/pgSQL関数%sã®%d行目ã§%s" -#: pl_exec.c:904 +#: pl_exec.c:965 #, c-format msgid "PL/pgSQL function %s %s" msgstr "PL/pgSQL関数%sã§%s" #. translator: last %s is a plpgsql statement type name -#: pl_exec.c:912 +#: pl_exec.c:973 #, c-format msgid "PL/pgSQL function %s line %d at %s" msgstr "PL/pgSQL関数%sã®%d行目ã®åž‹%s" -#: pl_exec.c:918 +#: pl_exec.c:979 #, c-format msgid "PL/pgSQL function %s" msgstr "PL/pgSQL関数%s" -#: pl_exec.c:1027 +#: pl_exec.c:1089 msgid "during statement block local variable initialization" msgstr "ステートメントブロックã§ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã‚’åˆæœŸåŒ–ã™ã‚‹éš›ã«" -#: pl_exec.c:1069 +#: pl_exec.c:1128 #, c-format msgid "variable \"%s\" declared NOT NULL cannot default to NULL" msgstr "変数 \"%s\" 㯠NOT NULL ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã‚‹ãŸã‚ã€åˆæœŸå€¤ã‚’ NULL ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: pl_exec.c:1119 +#: pl_exec.c:1178 msgid "during statement block entry" msgstr "ステートメントブロックを登録ã™ã‚‹éš›ã«" -#: pl_exec.c:1140 +#: pl_exec.c:1199 msgid "during statement block exit" msgstr "ステートメントブロックを抜ã‘ã‚‹éš›ã«" -#: pl_exec.c:1183 +#: pl_exec.c:1242 msgid "during exception cleanup" msgstr "例外をクリーンアップã™ã‚‹éš›ã«" -#: pl_exec.c:1536 +#: pl_exec.c:1593 #, c-format msgid "GET STACKED DIAGNOSTICS cannot be used outside an exception handler" msgstr "GET STACKED DIAGNOSTICSã¯ä¾‹å¤–ãƒãƒ³ãƒ‰ãƒ©ã®å¤–ã§ã¯ä½¿ãˆã¾ã›ã‚“" -#: pl_exec.c:1737 +#: pl_exec.c:1789 #, c-format msgid "case not found" msgstr "case ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: pl_exec.c:1738 +#: pl_exec.c:1790 #, c-format msgid "CASE statement is missing ELSE part." msgstr "CASE ステートメント㫠ELSE 部分ãŒã‚りã¾ã›ã‚“" -#: pl_exec.c:1890 +#: pl_exec.c:1944 #, c-format msgid "lower bound of FOR loop cannot be null" msgstr "FOR ループã®ä¸‹é™ã‚’ NULL ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: pl_exec.c:1905 +#: pl_exec.c:1960 #, c-format msgid "upper bound of FOR loop cannot be null" msgstr "FOR ループã®ä¸Šé™ã‚’ NULL ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: pl_exec.c:1922 +#: pl_exec.c:1978 #, c-format msgid "BY value of FOR loop cannot be null" msgstr "FOR ループã«ãŠã‘ã‚‹ BY ã®å€¤ã‚’ NULL ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: pl_exec.c:1928 +#: pl_exec.c:1984 #, c-format msgid "BY value of FOR loop must be greater than zero" msgstr "FOR ループã«ãŠã‘ã‚‹ BY ã®å€¤ã¯ã‚¼ãƒ­ã‚ˆã‚Šå¤§ãããªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: pl_exec.c:2098 pl_exec.c:3658 +#: pl_exec.c:2153 pl_exec.c:3910 #, c-format msgid "cursor \"%s\" already in use" msgstr "カーソル \"%s\" ã¯ã™ã§ã«ä½¿ã‚れã¦ã„ã¾ã™" -#: pl_exec.c:2121 pl_exec.c:3720 +#: pl_exec.c:2176 pl_exec.c:3972 #, c-format msgid "arguments given for cursor without arguments" msgstr "引数ãªã—ã®ã‚«ãƒ¼ã‚½ãƒ«ã«å¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ" -#: pl_exec.c:2140 pl_exec.c:3739 +#: pl_exec.c:2195 pl_exec.c:3991 #, c-format msgid "arguments required for cursor" msgstr "カーソルã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™" -#: pl_exec.c:2227 +#: pl_exec.c:2280 #, c-format msgid "FOREACH expression must not be null" msgstr "FOREACHå¼ã¯NULLã§ã¯ã„ã‘ã¾ã›ã‚“" -#: pl_exec.c:2233 +#: pl_exec.c:2286 #, c-format msgid "FOREACH expression must yield an array, not type %s" msgstr "FOREACHå¼ã¯%såž‹ã§ã¯ãªãé…列を生æˆã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: pl_exec.c:2250 +#: pl_exec.c:2303 #, c-format msgid "slice dimension (%d) is out of the valid range 0..%d" msgstr "範囲次元%dã¯æœ‰åŠ¹ç¯„å›²0ã‹ã‚‰%dã¾ã§ã®é–“ã«ã‚りã¾ã›ã‚“" -#: pl_exec.c:2277 +#: pl_exec.c:2330 #, c-format msgid "FOREACH ... SLICE loop variable must be of an array type" msgstr "FOREACH ... SLICEループ変数ã¯é…列型ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: pl_exec.c:2281 +#: pl_exec.c:2334 #, c-format msgid "FOREACH loop variable must not be of an array type" msgstr "FOREACHループ変数ã¯é…列型ã§ã¯ã„ã‘ã¾ã›ã‚“" -#: pl_exec.c:2502 pl_exec.c:2655 +#: pl_exec.c:2522 pl_exec.c:2604 pl_exec.c:2771 #, c-format -#| msgid "while casting return value to function's return type" msgid "cannot return non-composite value from function returning composite type" msgstr "複åˆåž‹ã‚’è¿”ã™é–¢æ•°ã‹ã‚‰è¤‡åˆåž‹ä»¥å¤–ã®å€¤ã‚’è¿”ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: pl_exec.c:2546 pl_gram.y:3020 +#: pl_exec.c:2648 pl_gram.y:3190 #, c-format msgid "cannot use RETURN NEXT in a non-SETOF function" msgstr "SETOF ã§ãªã„関数ã§ã¯ RETURN NEXT ã¯ä½¿ãˆã¾ã›ã‚“" -#: pl_exec.c:2574 pl_exec.c:2697 +#: pl_exec.c:2682 pl_exec.c:2813 #, c-format msgid "wrong result type supplied in RETURN NEXT" msgstr "RETURN NEXT ã«ãŠã„ã¦èª¤ã£ãŸæˆ»ã‚Šå€¤ã®åž‹ãŒæŒ‡å®šã•れã¦ã„ã¾ã™" -#: pl_exec.c:2597 pl_exec.c:4094 pl_exec.c:4420 pl_exec.c:4455 pl_exec.c:4521 -#: pl_exec.c:4540 pl_exec.c:4608 pl_exec.c:4631 +#: pl_exec.c:2711 pl_exec.c:4380 pl_exec.c:4709 pl_exec.c:4735 pl_exec.c:4801 +#: pl_exec.c:4820 pl_exec.c:4888 pl_exec.c:4911 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "レコード \"%s\" ã«ã¯ã€ã¾ã å€¤ãŒä»£å…¥ã•れã¦ã„ã¾ã›ã‚“" -#: pl_exec.c:2599 pl_exec.c:4096 pl_exec.c:4422 pl_exec.c:4457 pl_exec.c:4523 -#: pl_exec.c:4542 pl_exec.c:4610 pl_exec.c:4633 +#: pl_exec.c:2713 pl_exec.c:4382 pl_exec.c:4711 pl_exec.c:4737 pl_exec.c:4803 +#: pl_exec.c:4822 pl_exec.c:4890 pl_exec.c:4913 #, c-format msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "ã¾ã ä»£å…¥ã•れã¦ã„ãªã„レコードã®ã‚¿ãƒ—ル構造ã¯ä¸å®šã§ã™" -#: pl_exec.c:2603 pl_exec.c:2623 +#: pl_exec.c:2717 pl_exec.c:2737 #, c-format msgid "wrong record type supplied in RETURN NEXT" msgstr "RETURN NEXT ã«ãŠã„ã¦ã€èª¤ã£ãŸãƒ¬ã‚³ãƒ¼ãƒ‰åž‹ãŒæŒ‡å®šã•れã¦ã„ã¾ã™" -#: pl_exec.c:2715 +#: pl_exec.c:2832 #, c-format msgid "RETURN NEXT must have a parameter" msgstr "RETURN NEXT ã«ã¯ãƒ‘ラメーターãŒå¿…è¦ã§ã™" -#: pl_exec.c:2748 pl_gram.y:3078 +#: pl_exec.c:2865 pl_gram.y:3252 #, c-format msgid "cannot use RETURN QUERY in a non-SETOF function" msgstr "SETOF ã§ãªã„関数ã§ã¯ RETURN QUERY ã¯ä½¿ãˆã¾ã›ã‚“" -#: pl_exec.c:2768 +#: pl_exec.c:2886 msgid "structure of query does not match function result type" msgstr "ã‚¯ã‚¨ãƒªãƒ¼ã®æ§‹é€ ãŒé–¢æ•°ã®æˆ»ã‚Šå€¤ã®åž‹ã¨ä¸€è‡´ã—ã¾ã›ã‚“" -#: pl_exec.c:2848 pl_exec.c:2980 +#: pl_exec.c:2966 pl_exec.c:3096 #, c-format msgid "RAISE option already specified: %s" msgstr "RAISE ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯æ—¢ã«æŒ‡å®šã•れã¦ã„ã¾ã™: %s" -#: pl_exec.c:2881 +#: pl_exec.c:2999 #, c-format msgid "RAISE without parameters cannot be used outside an exception handler" msgstr "引数ã®ç„¡ã„ RAISE ã¯ã€ä¾‹å¤–ãƒãƒ³ãƒ‰ãƒ©ã®å¤–ã§ã¯ä½¿ãˆã¾ã›ã‚“" -#: pl_exec.c:2922 -#, c-format -msgid "too few parameters specified for RAISE" -msgstr "RAISE ã«æŒ‡å®šã•れãŸãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼ã®æ•°ãŒè¶³ã‚Šã¾ã›ã‚“" - -#: pl_exec.c:2950 -#, c-format -msgid "too many parameters specified for RAISE" -msgstr "RAISE ã«æŒ‡å®šã•れãŸãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼ã®æ•°ãŒå¤šã™ãŽã¾ã™" - -#: pl_exec.c:2970 +#: pl_exec.c:3086 #, c-format msgid "RAISE statement option cannot be null" msgstr "RAISE ステートメントã®ã‚ªãƒ—ションã«ã¯ NULL ã¯æŒ‡å®šã§ãã¾ã›ã‚“" -#: pl_exec.c:3041 +#: pl_exec.c:3155 #, c-format msgid "%s" msgstr "%s" -#: pl_exec.c:3211 pl_exec.c:3348 pl_exec.c:3521 +#: pl_exec.c:3226 +#, c-format +msgid "assertion failed" +msgstr "アサーションã«å¤±æ•—ã—ã¾ã—ãŸ" + +#: pl_exec.c:3416 pl_exec.c:3560 pl_exec.c:3749 #, c-format msgid "cannot COPY to/from client in PL/pgSQL" msgstr "PL/pgSQL 内ã§ã¯ COPY to/from ã¯ä½¿ãˆã¾ã›ã‚“" -#: pl_exec.c:3215 pl_exec.c:3352 pl_exec.c:3525 +#: pl_exec.c:3420 pl_exec.c:3564 pl_exec.c:3753 #, c-format msgid "cannot begin/end transactions in PL/pgSQL" msgstr "PL/pgSQL 内ã§ã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’é–‹å§‹ï¼çµ‚了ã§ãã¾ã›ã‚“" -#: pl_exec.c:3216 pl_exec.c:3353 pl_exec.c:3526 +#: pl_exec.c:3421 pl_exec.c:3565 pl_exec.c:3754 #, c-format msgid "Use a BEGIN block with an EXCEPTION clause instead." msgstr "代ã‚り㫠EXCEPTION å¥ã‚’伴ㆠBEGIN ブロックを使用ã—ã¦ãã ã•ã„" -#: pl_exec.c:3376 pl_exec.c:3550 +#: pl_exec.c:3588 pl_exec.c:3778 #, c-format msgid "INTO used with a command that cannot return data" msgstr "データを返ã›ãªã„命令㧠INTO ãŒä½¿ã‚れã¾ã—ãŸ" -#: pl_exec.c:3396 pl_exec.c:3570 +#: pl_exec.c:3616 pl_exec.c:3806 #, c-format msgid "query returned no rows" msgstr "クエリーã¯è¡Œã‚’è¿”ã—ã¾ã›ã‚“ã§ã—ãŸ" -#: pl_exec.c:3405 pl_exec.c:3579 +#: pl_exec.c:3635 pl_exec.c:3825 #, c-format msgid "query returned more than one row" msgstr "クエリーãŒè¤‡æ•°ã®è¡Œã‚’è¿”ã—ã¾ã—ãŸ" -#: pl_exec.c:3420 +#: pl_exec.c:3652 #, c-format msgid "query has no destination for result data" msgstr "クエリーã«çµæžœãƒ‡ãƒ¼ã‚¿ã®è¿”å´å…ˆãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“" -#: pl_exec.c:3421 +#: pl_exec.c:3653 #, c-format msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "SELECT ã®çµæžœã‚’破棄ã—ãŸã„å ´åˆã¯ã€ä»£ã‚り㫠PERFORM を使ã£ã¦ãã ã•ã„" -#: pl_exec.c:3454 pl_exec.c:6414 +#: pl_exec.c:3685 pl_exec.c:7130 #, c-format msgid "query string argument of EXECUTE is null" msgstr "EXECUTE ã®ã‚¯ã‚¨ãƒªãƒ¼æ–‡å­—列ã®å¼•数㌠NULL ã§ã™" -#: pl_exec.c:3513 +#: pl_exec.c:3741 #, c-format msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "SELECT ... INTO ã® EXECUTE ã¯å®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“" -#: pl_exec.c:3514 +#: pl_exec.c:3742 #, c-format msgid "You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS instead." msgstr "代ã‚りã«EXECUTE ... INTOã¾ãŸã¯EXECUTE CREATE TABLE ... ASを使用ã™ã‚‹æ–¹ãŒã‚ˆã„ã‹ã‚‚ã—れã¾ã›ã‚“。" -#: pl_exec.c:3802 pl_exec.c:3894 +#: pl_exec.c:4054 pl_exec.c:4146 #, c-format msgid "cursor variable \"%s\" is null" msgstr "カーソル変数 \"%s\" ㌠NULL ã§ã™" -#: pl_exec.c:3809 pl_exec.c:3901 +#: pl_exec.c:4061 pl_exec.c:4153 #, c-format msgid "cursor \"%s\" does not exist" msgstr "カーソル \"%s\" ã¯å­˜åœ¨ã—ã¾ã›ã‚“" -#: pl_exec.c:3823 +#: pl_exec.c:4075 #, c-format msgid "relative or absolute cursor position is null" msgstr "相対もã—ãã¯çµ¶å¯¾ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ãŒ NULL ã§ã™" -#: pl_exec.c:3990 +#: pl_exec.c:4255 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "NOT NULL ã¨ã—ã¦å®£è¨€ã•れãŸå¤‰æ•° \"%s\" ã«ã¯ NULL を代入ã§ãã¾ã›ã‚“" -#: pl_exec.c:4037 +#: pl_exec.c:4324 #, c-format msgid "cannot assign non-composite value to a row variable" msgstr "複åˆå€¤ã§ãªã„値を行変数ã«ä»£å…¥ã§ãã¾ã›ã‚“" -#: pl_exec.c:4061 +#: pl_exec.c:4348 #, c-format msgid "cannot assign non-composite value to a record variable" msgstr "複åˆå€¤ã§ãªã„値をレコード変数ã«ä»£å…¥ã§ãã¾ã›ã‚“" -#: pl_exec.c:4206 +#: pl_exec.c:4491 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "é…åˆ—ã®æ¬¡å…ƒæ•°(%d)ãŒæŒ‡å®šå¯èƒ½ãªæœ€å¤§å€¤(%d)ã‚’è¶…ãˆã¦ã„ã¾ã™" -#: pl_exec.c:4238 +#: pl_exec.c:4523 #, c-format msgid "subscripted object is not an array" msgstr "添字ã¤ãオブジェクトã¯é…列ã§ã¯ã‚りã¾ã›ã‚“" -#: pl_exec.c:4275 +#: pl_exec.c:4560 #, c-format msgid "array subscript in assignment must not be null" msgstr "代入ã«ãŠã‘ã‚‹é…åˆ—ã®æ·»å­—㌠NULL ã§ã‚ã£ã¦ã¯ãªã‚Šã¾ã›ã‚“" -#: pl_exec.c:4744 +#: pl_exec.c:5027 #, c-format msgid "query \"%s\" did not return data" msgstr "クエリー \"%s\" ãŒãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã—ã¾ã›ã‚“ã§ã—ãŸ" -#: pl_exec.c:4752 +#: pl_exec.c:5035 #, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" msgstr[0] "クエリー \"%s\" ㌠%d 個ã®åˆ—ã‚’è¿”ã—ã¾ã—ãŸ" msgstr[1] "クエリー \"%s\" ㌠%d 個ã®åˆ—ã‚’è¿”ã—ã¾ã—ãŸ" -#: pl_exec.c:4778 +#: pl_exec.c:5062 #, c-format msgid "query \"%s\" returned more than one row" msgstr "クエリー \"%s\" ãŒè¤‡æ•°ã®è¡Œã‚’è¿”ã—ã¾ã—ãŸ" -#: pl_exec.c:4835 +#: pl_exec.c:5126 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "クエリー \"%s\" ㌠SELECT ã§ã¯ã‚りã¾ã›ã‚“" -#: pl_funcs.c:218 +#: pl_funcs.c:237 msgid "statement block" msgstr "ステートメントブロック" -#: pl_funcs.c:220 +#: pl_funcs.c:239 msgid "assignment" msgstr "代入" -#: pl_funcs.c:230 +#: pl_funcs.c:249 msgid "FOR with integer loop variable" msgstr "æ•´æ•°ã®ãƒ«ãƒ¼ãƒ—変数を伴ㆠFOR" -#: pl_funcs.c:232 +#: pl_funcs.c:251 msgid "FOR over SELECT rows" msgstr "SELECT 行を制御ã™ã‚‹ FOR" -#: pl_funcs.c:234 +#: pl_funcs.c:253 msgid "FOR over cursor" msgstr "カーソルを制御ã™ã‚‹ FOR" -#: pl_funcs.c:236 +#: pl_funcs.c:255 msgid "FOREACH over array" msgstr "é…列全体ã«å¯¾ã™ã‚‹FOREACH" -#: pl_funcs.c:248 +#: pl_funcs.c:269 msgid "SQL statement" msgstr "SQL ステートメント" -#: pl_funcs.c:250 -msgid "EXECUTE statement" -msgstr "EXECUTE ステートメント" - -#: pl_funcs.c:252 +#: pl_funcs.c:273 msgid "FOR over EXECUTE statement" msgstr "EXECUTE ステートメントを制御ã™ã‚‹ FOR" -#: pl_gram.y:450 +#: pl_gram.y:474 #, c-format msgid "block label must be placed before DECLARE, not after" msgstr "ブロックラベル㯠DECLARE ã®å¾Œã§ã¯ãªãå‰ã«ç½®ã‹ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: pl_gram.y:470 +#: pl_gram.y:494 #, c-format msgid "collations are not supported by type %s" msgstr "%såž‹ã§ã¯ç…§åˆé †åºã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“" -#: pl_gram.y:485 +#: pl_gram.y:509 #, c-format msgid "row or record variable cannot be CONSTANT" msgstr "行ã¾ãŸã¯ãƒ¬ã‚³ãƒ¼ãƒ‰å¤‰æ•°ã‚’ CONSTANT ã«ã¯ã§ãã¾ã›ã‚“" -#: pl_gram.y:495 +#: pl_gram.y:519 #, c-format msgid "row or record variable cannot be NOT NULL" msgstr "行ã¾ãŸã¯ãƒ¬ã‚³ãƒ¼ãƒ‰å¤‰æ•°ã‚’ NOT NULL ã«ã¯ã§ãã¾ã›ã‚“" -#: pl_gram.y:506 +#: pl_gram.y:530 #, c-format msgid "default value for row or record variable is not supported" msgstr "行ã¾ãŸã¯ãƒ¬ã‚³ãƒ¼ãƒ‰å¤‰æ•°ã®ãƒ‡ãƒ•ォルト値指定ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" -#: pl_gram.y:651 pl_gram.y:666 pl_gram.y:692 +#: pl_gram.y:675 pl_gram.y:690 pl_gram.y:716 #, c-format msgid "variable \"%s\" does not exist" msgstr "変数\"%s\"ã¯å­˜åœ¨ã—ã¾ã›ã‚“" -#: pl_gram.y:710 pl_gram.y:723 +#: pl_gram.y:734 pl_gram.y:762 msgid "duplicate declaration" msgstr "é‡è¤‡ã—ãŸå®£è¨€ã§ã™ã€‚" -#: pl_gram.y:901 +#: pl_gram.y:745 pl_gram.y:773 +#, c-format +msgid "variable \"%s\" shadows a previously defined variable" +msgstr "変数\"%s\"ã¯ä»¥å‰ã«å®šç¾©ã—ãŸå¤‰æ•°ã‚’éš ã—ã¾ã™" + +#: pl_gram.y:952 #, c-format msgid "diagnostics item %s is not allowed in GET STACKED DIAGNOSTICS" msgstr "GET STACKED DIAGNOSTICSã§ã¯è¨ºæ–­é …ç›®%sã¯è¨±ã•れã¾ã›ã‚“" -#: pl_gram.y:919 +#: pl_gram.y:970 #, c-format msgid "diagnostics item %s is not allowed in GET CURRENT DIAGNOSTICS" msgstr "GET CURRENT DIAGNOSTICSã§ã¯è¨ºæ–­é …ç›®%sã¯è¨±ã•れã¾ã›ã‚“" -#: pl_gram.y:1017 +#: pl_gram.y:1068 msgid "unrecognized GET DIAGNOSTICS item" msgstr "GET DIAGNOSTICS é …ç›®ãŒèªè­˜ã§ãã¾ã›ã‚“" -#: pl_gram.y:1028 pl_gram.y:3265 +#: pl_gram.y:1079 pl_gram.y:3439 #, c-format msgid "\"%s\" is not a scalar variable" msgstr "\"%s\" ã¯ã‚¹ã‚«ãƒ©ãƒ¼å¤‰æ•°ã§ã¯ã‚りã¾ã›ã‚“" -#: pl_gram.y:1280 pl_gram.y:1474 +#: pl_gram.y:1331 pl_gram.y:1525 #, c-format msgid "loop variable of loop over rows must be a record or row variable or list of scalar variables" msgstr "行をã¾ãŸãŒã‚‹ãƒ«ãƒ¼ãƒ—ã«ãŠã‘るループ変数ã¯ã€ãƒ¬ã‚³ãƒ¼ãƒ‰ã€è¡Œå¤‰æ•°ã€ã‚¹ã‚«ãƒ©ãƒ¼å¤‰æ•°ä¸¦ã³ã®ã„ãšã‚Œã‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: pl_gram.y:1314 +#: pl_gram.y:1365 #, c-format msgid "cursor FOR loop must have only one target variable" msgstr "カーソルを使ã£ãŸ FOR ループã«ã¯ã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆå¤‰æ•°ãŒï¼‘個ã ã‘å¿…è¦ã§ã™" -#: pl_gram.y:1321 +#: pl_gram.y:1372 #, c-format msgid "cursor FOR loop must use a bound cursor variable" msgstr "カーソルを使ã£ãŸ FOR ループã§ã¯ã€ãれã«é–¢é€£ä»˜ã‘られãŸã‚«ãƒ¼ã‚½ãƒ«å¤‰æ•°ã‚’使用ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: pl_gram.y:1405 +#: pl_gram.y:1456 #, c-format msgid "integer FOR loop must have only one target variable" msgstr "整数を使ã£ãŸ FOR ループã«ã¯ã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆå¤‰æ•°ãŒï¼‘個ã ã‘å¿…è¦ã§ã™" -#: pl_gram.y:1441 +#: pl_gram.y:1492 #, c-format msgid "cannot specify REVERSE in query FOR loop" msgstr "クエリーを使ã£ãŸ FOR ループã®ä¸­ã§ã¯ REVERSE ã¯æŒ‡å®šã§ãã¾ã›ã‚“" -#: pl_gram.y:1588 +#: pl_gram.y:1639 #, c-format msgid "loop variable of FOREACH must be a known variable or list of variables" msgstr "FOREACHã®ãƒ«ãƒ¼ãƒ—å¤‰æ•°ã¯æ—¢çŸ¥ã®å¤‰æ•°ã¾ãŸã¯å¤‰æ•°ã®ãƒªã‚¹ãƒˆã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: pl_gram.y:1640 pl_gram.y:1677 pl_gram.y:1725 pl_gram.y:2721 pl_gram.y:2802 -#: pl_gram.y:2913 pl_gram.y:3666 +#: pl_gram.y:1680 +#, c-format +msgid "there is no label \"%s\" attached to any block or loop enclosing this statement" +msgstr "ã“ã®ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆã‚’囲むブロックã¾ãŸã¯ãƒ«ãƒ¼ãƒ—ã«ãƒ©ãƒ™ãƒ« \"%s\" ã¯ã‚りã¾ã›ã‚“" + +#: pl_gram.y:1688 +#, c-format +msgid "block label \"%s\" cannot be used in CONTINUE" +msgstr "ブロックラベル \"%s\" ã¯CONTINUEã®ä¸­ã§ã¯ä½¿ãˆã¾ã›ã‚“" + +#: pl_gram.y:1703 +#, c-format +msgid "EXIT cannot be used outside a loop, unless it has a label" +msgstr "ラベルãŒãªã„é™ã‚Šã€EXIT ã¯ãƒ«ãƒ¼ãƒ—ã®å¤–ã§ã¯ä½¿ãˆã¾ã›ã‚“" + +#: pl_gram.y:1704 +#, c-format +msgid "CONTINUE cannot be used outside a loop" +msgstr "CONTINUE ã¯ãƒ«ãƒ¼ãƒ—ã®å¤–ã§ã¯ä½¿ãˆã¾ã›ã‚“" + +#: pl_gram.y:1728 pl_gram.y:1765 pl_gram.y:1813 pl_gram.y:2889 pl_gram.y:2974 +#: pl_gram.y:3085 pl_gram.y:3841 msgid "unexpected end of function definition" msgstr "予期ã—ãªã„関数定義ã®çµ‚端ã«é”ã—ã¾ã—ãŸ" -#: pl_gram.y:1745 pl_gram.y:1769 pl_gram.y:1785 pl_gram.y:1791 pl_gram.y:1880 -#: pl_gram.y:1888 pl_gram.y:1902 pl_gram.y:1997 pl_gram.y:2178 pl_gram.y:2261 -#: pl_gram.y:2394 pl_gram.y:3508 pl_gram.y:3569 pl_gram.y:3647 +#: pl_gram.y:1833 pl_gram.y:1857 pl_gram.y:1873 pl_gram.y:1879 pl_gram.y:1997 +#: pl_gram.y:2005 pl_gram.y:2019 pl_gram.y:2114 pl_gram.y:2295 pl_gram.y:2389 +#: pl_gram.y:2541 pl_gram.y:3682 pl_gram.y:3743 pl_gram.y:3822 msgid "syntax error" msgstr "構文エラー" -#: pl_gram.y:1773 pl_gram.y:1775 pl_gram.y:2182 pl_gram.y:2184 +#: pl_gram.y:1861 pl_gram.y:1863 pl_gram.y:2299 pl_gram.y:2301 msgid "invalid SQLSTATE code" msgstr "無効㪠SQLSTATE コードã§ã™" -#: pl_gram.y:1944 +#: pl_gram.y:2061 msgid "syntax error, expected \"FOR\"" msgstr "構文エラー。\"FOR\" を期待ã—ã¦ã„ã¾ã—ãŸ" -#: pl_gram.y:2006 +#: pl_gram.y:2123 #, c-format msgid "FETCH statement cannot return multiple rows" msgstr "FETCH ステートメントã¯è¤‡æ•°è¡Œã‚’è¿”ã›ã¾ã›ã‚“" -#: pl_gram.y:2062 +#: pl_gram.y:2179 #, c-format msgid "cursor variable must be a simple variable" msgstr "カーソル変数ã¯å˜ç´”変数ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: pl_gram.y:2068 +#: pl_gram.y:2185 #, c-format msgid "variable \"%s\" must be of type cursor or refcursor" msgstr "変数 \"%s\" 㯠cursor åž‹ã¾ãŸã¯ refcursor åž‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: pl_gram.y:2236 -msgid "label does not exist" -msgstr "ラベルãŒå­˜åœ¨ã—ã¾ã›ã‚“" - -#: pl_gram.y:2365 pl_gram.y:2376 +#: pl_gram.y:2512 pl_gram.y:2523 #, c-format msgid "\"%s\" is not a known variable" msgstr "\"%s\"ã¯æ—¢çŸ¥ã®å¤‰æ•°ã§ã¯ã‚りã¾ã›ã‚“" -#: pl_gram.y:2480 pl_gram.y:2490 pl_gram.y:2645 +#: pl_gram.y:2627 pl_gram.y:2637 pl_gram.y:2793 msgid "mismatched parentheses" msgstr "カッコãŒå¯¾å¿œã—ã¦ã„ã¾ã›ã‚“" -#: pl_gram.y:2494 +#: pl_gram.y:2641 #, c-format msgid "missing \"%s\" at end of SQL expression" msgstr "SQL 表ç¾å¼ã®çµ‚端㫠\"%s\" ãŒã‚りã¾ã›ã‚“" -#: pl_gram.y:2500 +#: pl_gram.y:2647 #, c-format msgid "missing \"%s\" at end of SQL statement" msgstr "SQL ステートメントã®çµ‚端㫠\"%s\" ãŒã‚りã¾ã›ã‚“" -#: pl_gram.y:2517 +#: pl_gram.y:2664 msgid "missing expression" msgstr "表ç¾å¼ãŒã‚りã¾ã›ã‚“" -#: pl_gram.y:2519 +#: pl_gram.y:2666 msgid "missing SQL statement" msgstr "SQLステートメントãŒã‚りã¾ã›ã‚“" -#: pl_gram.y:2647 +#: pl_gram.y:2795 msgid "incomplete data type declaration" msgstr "データ型ã®å®šç¾©ãŒä¸å®Œå…¨ã§ã™" -#: pl_gram.y:2670 +#: pl_gram.y:2818 msgid "missing data type declaration" msgstr "データ型ã®å®šç¾©ãŒã‚りã¾ã›ã‚“" -#: pl_gram.y:2726 +#: pl_gram.y:2897 msgid "INTO specified more than once" msgstr "INTO ãŒè¤‡æ•°å›žæŒ‡å®šã•れã¦ã„ã¾ã™" -#: pl_gram.y:2894 +#: pl_gram.y:3066 msgid "expected FROM or IN" msgstr "FROM ã‚‚ã—ã㯠IN を期待ã—ã¦ã„ã¾ã—ãŸ" -#: pl_gram.y:2954 +#: pl_gram.y:3126 #, c-format msgid "RETURN cannot have a parameter in function returning set" msgstr "値ã®ã‚»ãƒƒãƒˆã‚’è¿”ã™é–¢æ•°ã§ã¯ã€RETURNã«ãƒ‘ラメータを指定ã§ãã¾ã›ã‚“" -#: pl_gram.y:2955 +#: pl_gram.y:3127 #, c-format msgid "Use RETURN NEXT or RETURN QUERY." msgstr "RETURN NEXT ã‚‚ã—ã㯠RETURN QUERY を使用ã—ã¦ãã ã•ã„" -#: pl_gram.y:2963 +#: pl_gram.y:3135 #, c-format msgid "RETURN cannot have a parameter in function with OUT parameters" msgstr "OUT パラメータã®ãªã„関数ã§ã¯ã€RETURN ã«ã¯ãƒ‘ラメータを指定ã§ãã¾ã›ã‚“" -#: pl_gram.y:2972 +#: pl_gram.y:3144 #, c-format msgid "RETURN cannot have a parameter in function returning void" msgstr "void ã‚’è¿”ã™é–¢æ•°ã§ã¯ã€RETURN ã«ã¯ãƒ‘ラメータを指定ã§ãã¾ã›ã‚“" -#: pl_gram.y:3034 +#: pl_gram.y:3204 #, c-format msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" msgstr "OUT パラメータã®ãªã„関数ã§ã¯ã€RETURN NEXT ã«ã¯ãƒ‘ラメータを指定ã§ãã¾ã›ã‚“" -#: pl_gram.y:3134 +#: pl_gram.y:3308 #, c-format msgid "\"%s\" is declared CONSTANT" msgstr "\"%s\" 㯠CONSTANT ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™" -#: pl_gram.y:3196 pl_gram.y:3208 +#: pl_gram.y:3370 pl_gram.y:3382 #, c-format msgid "record or row variable cannot be part of multiple-item INTO list" msgstr "レコードもã—ãã¯è¡Œå¤‰æ•°ã¯ã€è¤‡æ•°é …目をæŒã¤ INTO リストã®ä¸€éƒ¨åˆ†ã¨ã—ã¦ã¯æŒ‡å®šã§ãã¾ã›ã‚“" -#: pl_gram.y:3253 +#: pl_gram.y:3427 #, c-format msgid "too many INTO variables specified" msgstr "INTO å¤‰æ•°ã®æŒ‡å®šãŒå¤šã™ãŽã¾ã™" -#: pl_gram.y:3461 +#: pl_gram.y:3635 #, c-format msgid "end label \"%s\" specified for unlabelled block" msgstr "ラベル無ã—ブロックã§çµ‚端ラベル \"%s\" ãŒæŒ‡å®šã•れã¾ã—ãŸ" -#: pl_gram.y:3468 +#: pl_gram.y:3642 #, c-format msgid "end label \"%s\" differs from block's label \"%s\"" msgstr "終端ラベル \"%s\" ãŒãƒ–ロックã®ãƒ©ãƒ™ãƒ« \"%s\" ã¨ç•°ãªã‚Šã¾ã™" -#: pl_gram.y:3503 +#: pl_gram.y:3677 #, c-format msgid "cursor \"%s\" has no arguments" msgstr "カーソル \"%s\" ã«å¼•æ•°ãŒã‚りã¾ã›ã‚“" -#: pl_gram.y:3517 +#: pl_gram.y:3691 #, c-format msgid "cursor \"%s\" has arguments" msgstr "カーソル \"%s\" ã«å¼•æ•°ãŒã¤ã„ã¦ã„ã¾ã™" -#: pl_gram.y:3559 +#: pl_gram.y:3733 #, c-format msgid "cursor \"%s\" has no argument named \"%s\"" msgstr "カーソル\"%s\"ã«\"%s\"ã¨ã„ã†åå‰ã®å¼•æ•°ãŒã‚りã¾ã›ã‚“" -#: pl_gram.y:3579 +#: pl_gram.y:3753 #, c-format msgid "value for parameter \"%s\" of cursor \"%s\" specified more than once" msgstr "カーソル\"%2$s\"ã®ãƒ‘ラメータ\"%1$s\"ã®å€¤ãŒè¤‡æ•°æŒ‡å®šã•れã¾ã—ãŸ" -#: pl_gram.y:3604 +#: pl_gram.y:3778 #, c-format msgid "not enough arguments for cursor \"%s\"" msgstr "カーソル\"%s\"ã®å¼•æ•°ãŒä¸è¶³ã—ã¦ã„ã¾ã™" -#: pl_gram.y:3611 +#: pl_gram.y:3785 #, c-format msgid "too many arguments for cursor \"%s\"" msgstr "カーソル\"%s\"ã«å¯¾ã™ã‚‹å¼•æ•°ãŒå¤šã™ãŽã¾ã™" -#: pl_gram.y:3698 +#: pl_gram.y:3873 msgid "unrecognized RAISE statement option" msgstr "RAISE ステートメントã®ã‚ªãƒ—ションをèªè­˜ã§ãã¾ã›ã‚“" -#: pl_gram.y:3702 +#: pl_gram.y:3877 msgid "syntax error, expected \"=\"" msgstr "構文エラー。\"=\" を期待ã—ã¦ã„ã¾ã—ãŸ" -#: pl_handler.c:61 +#: pl_gram.y:3918 +#, c-format +msgid "too many parameters specified for RAISE" +msgstr "RAISE ã«æŒ‡å®šã•れãŸãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼ã®æ•°ãŒå¤šã™ãŽã¾ã™" + +#: pl_gram.y:3922 +#, c-format +msgid "too few parameters specified for RAISE" +msgstr "RAISE ã«æŒ‡å®šã•れãŸãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼ã®æ•°ãŒè¶³ã‚Šã¾ã›ã‚“" + +#: pl_handler.c:151 msgid "Sets handling of conflicts between PL/pgSQL variable names and table column names." msgstr "PL/pgSQL変数åã¨ãƒ†ãƒ¼ãƒ–ルã®ã‚«ãƒ©ãƒ åã®é–“ã®è¡çªå‡¦ç†ã‚’設定ã—ã¦ãã ã•ã„" +#: pl_handler.c:160 +msgid "Print information about parameters in the DETAIL part of the error messages generated on INTO ... STRICT failures." +msgstr "INTO ... STRICT ã®å¤±æ•—ã§ç™ºç”Ÿã—ãŸã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®DETAIL部分ã§ã€ãƒ‘ラメータã«ã¤ã„ã¦ã®æƒ…報を表示ã—ã¾ã™ã€‚" + +#: pl_handler.c:168 +msgid "Perform checks given in ASSERT statements." +msgstr "ASSERTæ–‡ã§ã®æ¤œæŸ»ã‚’実行ã—ã¾ã™ã€‚" + +#: pl_handler.c:176 +msgid "List of programming constructs that should produce a warning." +msgstr "警告を生æˆã™ã‚‹ãƒ—ログラミング構造ã®ä¸€è¦§ã§ã™ã€‚" + +#: pl_handler.c:186 +msgid "List of programming constructs that should produce an error." +msgstr "エラーを生æˆã™ã‚‹ãƒ—ログラミング構造ã®ä¸€è¦§ã§ã™ã€‚" + #. translator: %s is typically the translation of "syntax error" -#: pl_scanner.c:553 +#: pl_scanner.c:622 #, c-format msgid "%s at end of input" msgstr "å…¥åŠ›ã®æœ€å¾Œã§ %s" #. translator: first %s is typically the translation of "syntax error" -#: pl_scanner.c:569 +#: pl_scanner.c:638 #, c-format msgid "%s at or near \"%s\"" msgstr "\"%2$s\" ã‚‚ã—ãã¯ãã®è¿‘辺㧠%1$s" -#~ msgid "RETURN must specify a record or row variable in function returning row" -#~ msgstr "行を返ã™é–¢æ•°ã§ã¯ã€RETURN ã«ãƒ¬ã‚³ãƒ¼ãƒ‰ã¾ãŸã¯è¡Œå¤‰æ•°ã‚’指定ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“" - -#~ msgid "syntax error; also virtual memory exhausted" -#~ msgstr "構文エラー: 仮想メモリも枯渇ã—ã¾ã—ãŸ" - -#~ msgid "parser stack overflow" -#~ msgstr "パーサã®ã‚¹ã‚¿ãƒƒã‚¯ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã—ã¾ã—ãŸ" - -#~ msgid "relation \"%s.%s\" does not exist" -#~ msgstr "リレーション \"%s.%s\" ãŒã‚りã¾ã›ã‚“" - -#~ msgid "RETURN NEXT must specify a record or row variable in function returning row" -#~ msgstr "行を返ã™é–¢æ•°ã§ã¯ã€RETURN NEXT ã«ãƒ¬ã‚³ãƒ¼ãƒ‰ã¾ãŸã¯è¡Œå¤‰æ•°ã‚’指定ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#~ msgid "syntax error: cannot back up" -#~ msgstr "構文エラー: ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã§ãã¾ã›ã‚“" diff --git a/src/pl/plpgsql/src/po/ru.po b/src/pl/plpgsql/src/po/ru.po index e38b7086c7..1004ca3aad 100644 --- a/src/pl/plpgsql/src/po/ru.po +++ b/src/pl/plpgsql/src/po/ru.po @@ -1,7 +1,7 @@ # Russian message translation file for plpgsql # 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/pl/plpython/po/es.po b/src/pl/plpython/po/es.po index 33ec199bbb..35f23bb50d 100644 --- a/src/pl/plpython/po/es.po +++ b/src/pl/plpython/po/es.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: plpython (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:07+0000\n" -"PO-Revision-Date: 2016-05-25 12:29-0500\n" +"POT-Creation-Date: 2017-08-27 21:46+0000\n" +"PO-Revision-Date: 2017-08-28 11:38+0200\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" "Language: es\n" @@ -26,49 +26,49 @@ msgstr "" msgid "plpy.cursor expected a query or a plan" msgstr "plpy.cursor espera una consulta o un plan" -#: plpy_cursorobject.c:179 +#: plpy_cursorobject.c:177 #, c-format msgid "plpy.cursor takes a sequence as its second argument" msgstr "plpy.cursor lleva una secuencia como segundo argumento" -#: plpy_cursorobject.c:195 plpy_spi.c:229 +#: plpy_cursorobject.c:193 plpy_spi.c:227 #, c-format msgid "could not execute plan" msgstr "no se pudo ejecutar el plan" -#: plpy_cursorobject.c:198 plpy_spi.c:232 +#: plpy_cursorobject.c:196 plpy_spi.c:230 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" msgstr[0] "Se esperaba una secuencia de %d argumento, se obtuvo %d: %s" msgstr[1] "Se esperaba una secuencia de %d argumentos, se obtuvo %d: %s" -#: plpy_cursorobject.c:354 +#: plpy_cursorobject.c:350 #, c-format msgid "iterating a closed cursor" msgstr "iterando un cursor cerrado" -#: plpy_cursorobject.c:362 plpy_cursorobject.c:427 +#: plpy_cursorobject.c:358 plpy_cursorobject.c:423 #, c-format msgid "iterating a cursor in an aborted subtransaction" msgstr "iterando un cursor en una subtransacción abortada" -#: plpy_cursorobject.c:419 +#: plpy_cursorobject.c:415 #, c-format msgid "fetch from a closed cursor" msgstr "haciendo «fetch» en un cursor cerrado" -#: plpy_cursorobject.c:467 plpy_spi.c:438 +#: plpy_cursorobject.c:463 plpy_spi.c:434 #, c-format msgid "query result has too many rows to fit in a Python list" msgstr "el resultado de la consulta tiene demasiados registros y no entran en una lista de Python" -#: plpy_cursorobject.c:508 +#: plpy_cursorobject.c:504 #, c-format msgid "closing a cursor in an aborted subtransaction" msgstr "cerrando un cursor en una subtransacción abortada" -#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:513 +#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:548 #, c-format msgid "%s" msgstr "%s" @@ -209,12 +209,12 @@ msgstr "no se pudo crear las globales" msgid "could not initialize globals" msgstr "no se pudo inicializar las globales" -#: plpy_main.c:389 +#: plpy_main.c:387 #, c-format msgid "PL/Python function \"%s\"" msgstr "función PL/Python «%s»" -#: plpy_main.c:396 +#: plpy_main.c:394 #, c-format msgid "PL/Python anonymous code block" msgstr "bloque de código anónimo de PL/Python" @@ -224,71 +224,76 @@ msgstr "bloque de código anónimo de PL/Python" msgid "plan.status takes no arguments" msgstr "plan.status no lleva argumentos" -#: plpy_plpymodule.c:178 plpy_plpymodule.c:181 +#: plpy_plpymodule.c:181 plpy_plpymodule.c:184 #, c-format msgid "could not import \"plpy\" module" msgstr "no se pudo importar el módulo «plpy»" -#: plpy_plpymodule.c:196 +#: plpy_plpymodule.c:199 +#, c-format +msgid "could not create the spiexceptions module" +msgstr "no se pudo crear el módulo spiexceptions" + +#: plpy_plpymodule.c:207 #, c-format msgid "could not add the spiexceptions module" -msgstr "no se pudo importar el módulo spiexceptions" +msgstr "no se pudo agregar el módulo spiexceptions" -#: plpy_plpymodule.c:217 +#: plpy_plpymodule.c:236 #, c-format -msgid "could not create the base SPI exceptions" -msgstr "no se pudo crear las excepciones SPI basales" +msgid "could not create exception \"%s\"" +msgstr "no se pudo crear la excepción «%s»" -#: plpy_plpymodule.c:252 plpy_plpymodule.c:256 +#: plpy_plpymodule.c:271 plpy_plpymodule.c:275 #, c-format msgid "could not generate SPI exceptions" msgstr "no se pudo generar excepciones SPI" -#: plpy_plpymodule.c:421 +#: plpy_plpymodule.c:443 #, c-format msgid "could not unpack arguments in plpy.elog" msgstr "no se pudo desempaquetar los argumentos de plpy.elog" -#: plpy_plpymodule.c:430 +#: plpy_plpymodule.c:452 msgid "could not parse error message in plpy.elog" msgstr "no se pudo analizar el mensaje de error de plpy.elog" -#: plpy_plpymodule.c:446 +#: plpy_plpymodule.c:469 #, c-format -msgid "the message is already specified" -msgstr "el mensaje ya está definido" +msgid "Argument 'message' given by name and position" +msgstr "El argumento 'message' fue pasado por nombre y posición" -#: plpy_plpymodule.c:469 +#: plpy_plpymodule.c:496 #, c-format msgid "'%s' is an invalid keyword argument for this function" msgstr "«%s» no es un argumento válido para esta función" -#: plpy_plpymodule.c:477 plpy_plpymodule.c:480 +#: plpy_plpymodule.c:507 plpy_plpymodule.c:513 #, c-format msgid "invalid SQLSTATE code" msgstr "código SQLSTATE no válido" -#: plpy_procedure.c:232 +#: plpy_procedure.c:230 #, c-format msgid "trigger functions can only be called as triggers" msgstr "las funciones disparadoras sólo pueden ser llamadas como disparadores" -#: plpy_procedure.c:237 +#: plpy_procedure.c:235 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "las funciones PL/Python no pueden retornar el tipo %s" -#: plpy_procedure.c:318 +#: plpy_procedure.c:316 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "la funciones PL/Python no pueden aceptar el tipo %s" -#: plpy_procedure.c:414 +#: plpy_procedure.c:412 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "no se pudo compilar la función PL/Python «%s»" -#: plpy_procedure.c:417 +#: plpy_procedure.c:415 #, c-format msgid "could not compile anonymous PL/Python code block" msgstr "no se pudo compilar el bloque anónimo PL/Python" @@ -303,27 +308,27 @@ msgstr "la orden no produjo un conjunto de resultados" msgid "second argument of plpy.prepare must be a sequence" msgstr "el segundo argumento de plpy.prepare debe ser una secuencia" -#: plpy_spi.c:118 +#: plpy_spi.c:116 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare: el nombre de tipo en la posición %d no es una cadena" -#: plpy_spi.c:194 +#: plpy_spi.c:192 #, c-format msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute espera una consulta o un plan" -#: plpy_spi.c:213 +#: plpy_spi.c:211 #, c-format msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute lleva una secuencia como segundo argumento" -#: plpy_spi.c:337 +#: plpy_spi.c:335 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "falló SPI_execute_plan: %s" -#: plpy_spi.c:379 +#: plpy_spi.c:377 #, c-format msgid "SPI_execute failed: %s" msgstr "falló SPI_execute: %s" @@ -388,42 +393,42 @@ msgstr "no se pudo crear una nueva lista Python" msgid "could not create bytes representation of Python object" msgstr "no se pudo crear la representación de cadena de bytes de Python" -#: plpy_typeio.c:822 +#: plpy_typeio.c:820 #, c-format msgid "could not create string representation of Python object" msgstr "no se pudo crear la representación de cadena de texto del objeto de Python" -#: plpy_typeio.c:833 +#: plpy_typeio.c:831 #, c-format msgid "could not convert Python object into cstring: Python string representation appears to contain null bytes" msgstr "no se pudo convertir el objeto Python a un cstring: la representación de cadena Python parece tener bytes nulos (\\0)" -#: plpy_typeio.c:879 +#: plpy_typeio.c:877 #, c-format msgid "return value of function with array return type is not a Python sequence" msgstr "el valor de retorno de la función con tipo de retorno array no es una secuencia Python" -#: plpy_typeio.c:1000 +#: plpy_typeio.c:996 #, c-format msgid "key \"%s\" not found in mapping" msgstr "la llave «%s» no fue encontrada en el mapa" -#: plpy_typeio.c:1001 +#: plpy_typeio.c:997 #, c-format msgid "To return null in a column, add the value None to the mapping with the key named after the column." msgstr "Para retornar null en una columna, agregue el valor None al mapa, con llave llamada igual que la columna." -#: plpy_typeio.c:1052 +#: plpy_typeio.c:1048 #, c-format msgid "length of returned sequence did not match number of columns in row" msgstr "el tamaño de la secuencia retornada no concuerda con el número de columnas de la fila" -#: plpy_typeio.c:1163 +#: plpy_typeio.c:1159 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "el atributo «%s» no existe en el objeto Python" -#: plpy_typeio.c:1164 +#: plpy_typeio.c:1160 #, c-format msgid "To return null in a column, let the returned object have an attribute named after column with value None." msgstr "Para retornar null en una columna, haga que el objeto retornado tenga un atributo llamado igual que la columna, con valor None." @@ -437,15 +442,3 @@ msgstr "no se pudo convertir el objeto Unicode de Python a bytes" #, c-format msgid "could not extract bytes from encoded string" msgstr "no se pudo extraer bytes desde la cadena codificada" - -#~ msgid "PL/Python does not support conversion to arrays of row types." -#~ msgstr "PL/Python no soporta la conversión de arrays a tipos de registro." - -#~ msgid "plpy.prepare does not support composite types" -#~ msgstr "plpy.prepare no soporta tipos compuestos" - -#~ msgid "Start a new session to use a different Python major version." -#~ msgstr "Inicie una nueva sesión para usar una versión mayor de Python diferente." - -#~ msgid "This session has previously used Python major version %d, and it is now attempting to use Python major version %d." -#~ msgstr "Esta sesión ha usado previamente la versión mayor de Python %d, y ahora está intentando usar la versión mayor %d." diff --git a/src/pl/plpython/po/fr.po b/src/pl/plpython/po/fr.po index 9784517018..2db977f6d6 100644 --- a/src/pl/plpython/po/fr.po +++ b/src/pl/plpython/po/fr.po @@ -8,8 +8,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 20:07+0000\n" -"PO-Revision-Date: 2016-09-24 18:10+0200\n" +"POT-Creation-Date: 2017-02-06 16:07+0000\n" +"PO-Revision-Date: 2017-02-06 19:02+0100\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" "Language: fr\n" @@ -17,7 +17,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.8.7\n" +"X-Generator: Poedit 1.8.11\n" #: plpy_cursorobject.c:101 #, c-format @@ -66,7 +66,7 @@ msgstr "le résultat de la requête contient trop de lignes pour être intégré msgid "closing a cursor in an aborted subtransaction" msgstr "fermeture d'un curseur dans une sous-transaction annulée" -#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:527 +#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:548 #, c-format msgid "%s" msgstr "%s" @@ -233,46 +233,51 @@ msgstr "bloc de code PL/Python anonyme" msgid "plan.status takes no arguments" msgstr "plan.status ne prends pas d'arguments" -#: plpy_plpymodule.c:178 plpy_plpymodule.c:181 +#: plpy_plpymodule.c:181 plpy_plpymodule.c:184 #, c-format msgid "could not import \"plpy\" module" msgstr "n'a pas pu importer le module « plpy »" -#: plpy_plpymodule.c:196 +#: plpy_plpymodule.c:199 +#, c-format +msgid "could not create the spiexceptions module" +msgstr "n'a pas pu créer le module « spiexceptions »" + +#: plpy_plpymodule.c:207 #, c-format msgid "could not add the spiexceptions module" msgstr "n'a pas pu ajouter le module « spiexceptions »" -#: plpy_plpymodule.c:217 +#: plpy_plpymodule.c:236 #, c-format -msgid "could not create the base SPI exceptions" -msgstr "n'a pas pu créer les exceptions SPI de base" +msgid "could not create exception \"%s\"" +msgstr "n'a pas pu créer l'exception « %s »" -#: plpy_plpymodule.c:252 plpy_plpymodule.c:256 +#: plpy_plpymodule.c:271 plpy_plpymodule.c:275 #, c-format msgid "could not generate SPI exceptions" msgstr "n'a pas pu générer les exceptions SPI" -#: plpy_plpymodule.c:422 +#: plpy_plpymodule.c:443 #, c-format msgid "could not unpack arguments in plpy.elog" msgstr "n'a pas pu déballer les arguments dans plpy.elog" -#: plpy_plpymodule.c:431 +#: plpy_plpymodule.c:452 msgid "could not parse error message in plpy.elog" msgstr "n'a pas pu analyser le message d'erreur dans plpy.elog" -#: plpy_plpymodule.c:448 +#: plpy_plpymodule.c:469 #, c-format msgid "Argument 'message' given by name and position" msgstr "Argument 'message' donn\" par nom et position" -#: plpy_plpymodule.c:475 +#: plpy_plpymodule.c:496 #, c-format msgid "'%s' is an invalid keyword argument for this function" msgstr "'%s' est une argument mot-clé invalide pour cette fonction" -#: plpy_plpymodule.c:486 plpy_plpymodule.c:492 +#: plpy_plpymodule.c:507 plpy_plpymodule.c:513 #, c-format msgid "invalid SQLSTATE code" msgstr "code SQLSTATE invalide" @@ -453,74 +458,77 @@ msgstr "n'a pas pu convertir l'objet Unicode Python en octets" msgid "could not extract bytes from encoded string" msgstr "n'a pas pu extraire les octets de la chaîne encodée" -#~ msgid "Python major version mismatch in session" -#~ msgstr "Différence de version majeure de Python dans la session" +#~ msgid "the message is already specified" +#~ msgstr "le message est déjà spécifié" -#~ msgid "This session has previously used Python major version %d, and it is now attempting to use Python major version %d." -#~ msgstr "" -#~ "Cette session a auparavant utilisé la version majeure %d de Python et elle\n" -#~ "essaie maintenant d'utiliser la version majeure %d." +#~ msgid "plpy.prepare does not support composite types" +#~ msgstr "plpy.prepare ne supporte pas les types composites" -#~ msgid "Start a new session to use a different Python major version." -#~ msgstr "" -#~ "Lancez une nouvelle session pour utiliser une version majeure différente de\n" -#~ "Python." +#~ msgid "PL/Python does not support conversion to arrays of row types." +#~ msgstr "PL/Python ne supporte pas les conversions vers des tableaux de types row." -#~ msgid "PL/Python function \"%s\" could not execute plan" -#~ msgstr "la fonction PL/python « %s » n'a pas pu exécuter un plan" +#~ msgid "unrecognized error in PLy_spi_execute_fetch_result" +#~ msgstr "erreur inconnue dans PLy_spi_execute_fetch_result" -#~ msgid "could not create string representation of Python object in PL/Python function \"%s\" while creating return value" -#~ msgstr "" -#~ "n'a pas pu créer la représentation en chaîne de caractère de l'objet\n" -#~ "Python dans la fonction PL/python « %s » lors de la création de la valeur\n" -#~ "de retour" +#~ msgid "PyCObject_AsVoidPtr() failed" +#~ msgstr "échec de PyCObject_AsVoidPtr()" -#~ msgid "could not compute string representation of Python object in PL/Python function \"%s\" while modifying trigger row" -#~ msgstr "" -#~ "n'a pas pu traiter la représentation de la chaîne d'un objet Python dans\n" -#~ "la fonction PL/Python « %s » lors de la modification de la ligne du trigger" +#~ msgid "PyCObject_FromVoidPtr() failed" +#~ msgstr "échec de PyCObject_FromVoidPtr()" -#~ msgid "PL/Python function \"%s\" failed" -#~ msgstr "échec de la fonction PL/python « %s »" +#~ msgid "transaction aborted" +#~ msgstr "transaction annulée" -#~ msgid "out of memory" -#~ msgstr "mémoire épuisée" +#~ msgid "invalid arguments for plpy.prepare" +#~ msgstr "arguments invalides pour plpy.prepare" -#~ msgid "PL/Python: %s" -#~ msgstr "PL/python : %s" +#~ msgid "unrecognized error in PLy_spi_prepare" +#~ msgstr "erreur inconnue dans PLy_spi_prepare" -#~ msgid "could not create procedure cache" -#~ msgstr "n'a pas pu créer le cache de procédure" +#~ msgid "unrecognized error in PLy_spi_execute_plan" +#~ msgstr "erreur inconnue dans PLy_spi_execute_plan" #~ msgid "unrecognized error in PLy_spi_execute_query" #~ msgstr "erreur inconnue dans PLy_spi_execute_query" -#~ msgid "unrecognized error in PLy_spi_execute_plan" -#~ msgstr "erreur inconnue dans PLy_spi_execute_plan" +#~ msgid "could not create procedure cache" +#~ msgstr "n'a pas pu créer le cache de procédure" -#~ msgid "unrecognized error in PLy_spi_prepare" -#~ msgstr "erreur inconnue dans PLy_spi_prepare" +#~ msgid "PL/Python: %s" +#~ msgstr "PL/python : %s" -#~ msgid "invalid arguments for plpy.prepare" -#~ msgstr "arguments invalides pour plpy.prepare" +#~ msgid "out of memory" +#~ msgstr "mémoire épuisée" -#~ msgid "transaction aborted" -#~ msgstr "transaction annulée" +#~ msgid "PL/Python function \"%s\" failed" +#~ msgstr "échec de la fonction PL/python « %s »" -#~ msgid "PyCObject_FromVoidPtr() failed" -#~ msgstr "échec de PyCObject_FromVoidPtr()" +#~ msgid "could not compute string representation of Python object in PL/Python function \"%s\" while modifying trigger row" +#~ msgstr "" +#~ "n'a pas pu traiter la représentation de la chaîne d'un objet Python dans\n" +#~ "la fonction PL/Python « %s » lors de la modification de la ligne du trigger" -#~ msgid "PyCObject_AsVoidPtr() failed" -#~ msgstr "échec de PyCObject_AsVoidPtr()" +#~ msgid "could not create string representation of Python object in PL/Python function \"%s\" while creating return value" +#~ msgstr "" +#~ "n'a pas pu créer la représentation en chaîne de caractère de l'objet\n" +#~ "Python dans la fonction PL/python « %s » lors de la création de la valeur\n" +#~ "de retour" -#~ msgid "unrecognized error in PLy_spi_execute_fetch_result" -#~ msgstr "erreur inconnue dans PLy_spi_execute_fetch_result" +#~ msgid "PL/Python function \"%s\" could not execute plan" +#~ msgstr "la fonction PL/python « %s » n'a pas pu exécuter un plan" -#~ msgid "PL/Python does not support conversion to arrays of row types." -#~ msgstr "PL/Python ne supporte pas les conversions vers des tableaux de types row." +#~ msgid "Start a new session to use a different Python major version." +#~ msgstr "" +#~ "Lancez une nouvelle session pour utiliser une version majeure différente de\n" +#~ "Python." -#~ msgid "plpy.prepare does not support composite types" -#~ msgstr "plpy.prepare ne supporte pas les types composites" +#~ msgid "This session has previously used Python major version %d, and it is now attempting to use Python major version %d." +#~ msgstr "" +#~ "Cette session a auparavant utilisé la version majeure %d de Python et elle\n" +#~ "essaie maintenant d'utiliser la version majeure %d." -#~ msgid "the message is already specified" -#~ msgstr "le message est déjà spécifié" +#~ msgid "Python major version mismatch in session" +#~ msgstr "Différence de version majeure de Python dans la session" + +#~ msgid "could not create the base SPI exceptions" +#~ msgstr "n'a pas pu créer les exceptions SPI de base" diff --git a/src/pl/plpython/po/it.po b/src/pl/plpython/po/it.po index 173d182bb3..27387b3b38 100644 --- a/src/pl/plpython/po/it.po +++ b/src/pl/plpython/po/it.po @@ -19,8 +19,8 @@ msgid "" msgstr "" "Project-Id-Version: plpython (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-17 00:07+0000\n" -"PO-Revision-Date: 2016-04-17 20:40+0100\n" +"POT-Creation-Date: 2017-02-09 21:07+0000\n" +"PO-Revision-Date: 2017-04-23 02:56+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -28,56 +28,56 @@ 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" #: plpy_cursorobject.c:101 #, c-format msgid "plpy.cursor expected a query or a plan" msgstr "plpy.cursor richiede una query o un piano" -#: plpy_cursorobject.c:179 +#: plpy_cursorobject.c:177 #, c-format msgid "plpy.cursor takes a sequence as its second argument" msgstr "plpy.cursor richiede una sequenza come secondo argomento" -#: plpy_cursorobject.c:195 plpy_spi.c:229 +#: plpy_cursorobject.c:193 plpy_spi.c:227 #, c-format msgid "could not execute plan" msgstr "esecuzione del piano fallita" -#: plpy_cursorobject.c:198 plpy_spi.c:232 +#: plpy_cursorobject.c:196 plpy_spi.c:230 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" msgstr[0] "Attesa sequenza di %d argomento, ricevuti %d: %s" msgstr[1] "Attesa sequenza di %d argomenti, ricevuti %d: %s" -#: plpy_cursorobject.c:354 +#: plpy_cursorobject.c:350 #, c-format msgid "iterating a closed cursor" msgstr "iterazione di un cursore chiuso" -#: plpy_cursorobject.c:362 plpy_cursorobject.c:427 +#: plpy_cursorobject.c:358 plpy_cursorobject.c:423 #, c-format msgid "iterating a cursor in an aborted subtransaction" msgstr "iterazione di un cursore in una sotto-transazione interrotta" -#: plpy_cursorobject.c:419 +#: plpy_cursorobject.c:415 #, c-format msgid "fetch from a closed cursor" msgstr "lettura da un cursore chiuso" -#: plpy_cursorobject.c:467 plpy_spi.c:438 +#: plpy_cursorobject.c:463 plpy_spi.c:434 #, c-format msgid "query result has too many rows to fit in a Python list" msgstr "il risultato della query ha troppe righe per una lista Python" -#: plpy_cursorobject.c:508 +#: plpy_cursorobject.c:504 #, c-format msgid "closing a cursor in an aborted subtransaction" msgstr "chiusura di un cursore in una sotto-transazione interrotta" -#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:513 +#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:548 #, c-format msgid "%s" msgstr "%s" @@ -217,12 +217,12 @@ msgstr "creazione delle variabili globali fallita" msgid "could not initialize globals" msgstr "inizializzazione delle variabili globali fallita" -#: plpy_main.c:389 +#: plpy_main.c:387 #, c-format msgid "PL/Python function \"%s\"" msgstr "funzione PL/Python \"%s\"" -#: plpy_main.c:396 +#: plpy_main.c:394 #, c-format msgid "PL/Python anonymous code block" msgstr "blocco di codice anonimo in PL/Python" @@ -232,71 +232,76 @@ msgstr "blocco di codice anonimo in PL/Python" msgid "plan.status takes no arguments" msgstr "plan.status non accetta argomenti" -#: plpy_plpymodule.c:178 plpy_plpymodule.c:181 +#: plpy_plpymodule.c:181 plpy_plpymodule.c:184 #, c-format msgid "could not import \"plpy\" module" msgstr "importazione del modulo \"plpy\" fallita" -#: plpy_plpymodule.c:196 +#: plpy_plpymodule.c:199 +#, c-format +msgid "could not create the spiexceptions module" +msgstr "creazione del modulo spiexceptions fallita" + +#: plpy_plpymodule.c:207 #, c-format msgid "could not add the spiexceptions module" msgstr "aggiunta del modulo spiexceptions fallita" -#: plpy_plpymodule.c:217 +#: plpy_plpymodule.c:236 #, c-format -msgid "could not create the base SPI exceptions" -msgstr "creazione delle eccezioni SPI di base fallita" +msgid "could not create exception \"%s\"" +msgstr "creazione dell'eccezione \"%s\" fallita" -#: plpy_plpymodule.c:252 plpy_plpymodule.c:256 +#: plpy_plpymodule.c:271 plpy_plpymodule.c:275 #, c-format msgid "could not generate SPI exceptions" msgstr "generazione delle eccezioni SPI fallita" -#: plpy_plpymodule.c:421 +#: plpy_plpymodule.c:443 #, c-format msgid "could not unpack arguments in plpy.elog" msgstr "non è stato possibile espandere gli argomenti in plpy.elog" -#: plpy_plpymodule.c:430 +#: plpy_plpymodule.c:452 msgid "could not parse error message in plpy.elog" msgstr "non è stato possibile interpretare il messaggio di errore in plpy.elog" -#: plpy_plpymodule.c:446 +#: plpy_plpymodule.c:469 #, c-format -msgid "the message is already specified" -msgstr "il messaggio è già specificato" +msgid "Argument 'message' given by name and position" +msgstr "Parametro 'message' dato con nome e posizione" -#: plpy_plpymodule.c:469 +#: plpy_plpymodule.c:496 #, c-format msgid "'%s' is an invalid keyword argument for this function" msgstr "'%s' è un nome di argomento non valido per questa funzione" -#: plpy_plpymodule.c:477 plpy_plpymodule.c:480 +#: plpy_plpymodule.c:507 plpy_plpymodule.c:513 #, c-format msgid "invalid SQLSTATE code" msgstr "codice SQLSTATE non valido" -#: plpy_procedure.c:232 +#: plpy_procedure.c:230 #, c-format msgid "trigger functions can only be called as triggers" msgstr "le funzioni trigger possono essere chiamate esclusivamente da trigger" -#: plpy_procedure.c:237 +#: plpy_procedure.c:235 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "le funzioni PL/Python non possono restituire il tipo %s" -#: plpy_procedure.c:318 +#: plpy_procedure.c:316 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "le funzioni PL/Python non possono accettare il tipo %s" -#: plpy_procedure.c:414 +#: plpy_procedure.c:412 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "compilazione della funzione PL/Python \"%s\" fallita" -#: plpy_procedure.c:417 +#: plpy_procedure.c:415 #, c-format msgid "could not compile anonymous PL/Python code block" msgstr "compilazione del blocco di codice anonimo PL/Python fallita" @@ -311,27 +316,27 @@ msgstr "il comando non ha prodotto risultati" msgid "second argument of plpy.prepare must be a sequence" msgstr "il secondo argomento di plpy.prepare deve essere una sequenza" -#: plpy_spi.c:118 +#: plpy_spi.c:116 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare: il nome del tipo nella posizione %d non è una stringa" -#: plpy_spi.c:194 +#: plpy_spi.c:192 #, c-format msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute si aspetta una query o un plan" -#: plpy_spi.c:213 +#: plpy_spi.c:211 #, c-format msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute richiede una sequenza come secondo argomento" -#: plpy_spi.c:337 +#: plpy_spi.c:335 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "SPI_execute_plan ha fallito: %s" -#: plpy_spi.c:379 +#: plpy_spi.c:377 #, c-format msgid "SPI_execute failed: %s" msgstr "SPI_execute ha fallito: %s" @@ -396,42 +401,42 @@ msgstr "creazione della nuova lista Python fallita" msgid "could not create bytes representation of Python object" msgstr "creazione della rappresentazione in byte dell'oggetto Python fallita" -#: plpy_typeio.c:822 +#: plpy_typeio.c:820 #, c-format msgid "could not create string representation of Python object" msgstr "creazione della rappresentazione stringa dell'oggetto Python fallita" -#: plpy_typeio.c:833 +#: plpy_typeio.c:831 #, c-format msgid "could not convert Python object into cstring: Python string representation appears to contain null bytes" msgstr "conversione dell'oggetto Python in cstring fallita: la rappresentazione stringa Python sembra contenere byte null" -#: plpy_typeio.c:879 +#: plpy_typeio.c:877 #, c-format msgid "return value of function with array return type is not a Python sequence" msgstr "il valore restituito dalla funzione con tipo restituito array non è una sequenza Python" -#: plpy_typeio.c:1000 +#: plpy_typeio.c:996 #, c-format msgid "key \"%s\" not found in mapping" msgstr "la chiave \"%s\" non è stata trovata nel dizionario" -#: plpy_typeio.c:1001 +#: plpy_typeio.c:997 #, c-format msgid "To return null in a column, add the value None to the mapping with the key named after the column." msgstr "Per restituire null in una colonna, inserire nella mappa il valore None con una chiave chiamata come la colonna." -#: plpy_typeio.c:1052 +#: plpy_typeio.c:1048 #, c-format msgid "length of returned sequence did not match number of columns in row" msgstr "la lunghezza della sequenza ritornata non rispetta il numero di colonne presenti nella riga" -#: plpy_typeio.c:1163 +#: plpy_typeio.c:1159 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "l'attributo \"%s\" non esiste nell'oggetto Python" -#: plpy_typeio.c:1164 +#: plpy_typeio.c:1160 #, c-format msgid "To return null in a column, let the returned object have an attribute named after column with value None." msgstr "Per restituire null in una colonna, l'oggetto restituito deve avere un attributo chiamato come la colonna con valore None." diff --git a/src/pl/plpython/po/ja.po b/src/pl/plpython/po/ja.po index 5a5040ee0b..aacf23903e 100644 --- a/src/pl/plpython/po/ja.po +++ b/src/pl/plpython/po/ja.po @@ -4,11 +4,11 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.1 beta2\n" +"Project-Id-Version: PostgreSQL 9.6.3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2012-08-11 16:28+0900\n" +"POT-Creation-Date: 2017-04-04 11:54+0900\n" "PO-Revision-Date: 2012-08-11 16:37+0900\n" -"Last-Translator: Honda Shigehiro \n" +"Last-Translator: Daisuke Higuchi \n" "Language-Team: Japan PostgreSQL Users Group \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -16,257 +16,277 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: plpy_cursorobject.c:98 +#: plpy_cursorobject.c:101 #, c-format msgid "plpy.cursor expected a query or a plan" msgstr "plpy.cursorã¯ã‚¯ã‚¨ãƒªãƒ¼ã‚‚ã—ãã¯å®Ÿè¡Œè¨ˆç”»ã‚’期待ã—ã¦ã„ã¾ã—ãŸ" -#: plpy_cursorobject.c:171 +#: plpy_cursorobject.c:177 #, c-format msgid "plpy.cursor takes a sequence as its second argument" msgstr "plpy.cursorã¯ç¬¬äºŒå¼•æ•°ã¨ã—ã¦ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚’å–りã¾ã™" -#: plpy_cursorobject.c:187 plpy_spi.c:222 +#: plpy_cursorobject.c:193 plpy_spi.c:227 #, c-format msgid "could not execute plan" msgstr "プランを実行ã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_cursorobject.c:190 plpy_spi.c:225 +#: plpy_cursorobject.c:196 plpy_spi.c:230 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" msgstr[0] "%d 番目ã®å¼•æ•°ã¯ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚’期待ã—ã¦ã„ã¾ã—ãŸãŒã€%d ãŒç¾ã‚Œã¾ã—ãŸï¼š%s" -#: plpy_cursorobject.c:340 +#: plpy_cursorobject.c:350 #, c-format msgid "iterating a closed cursor" -msgstr "クローズã•れãŸã‚«ãƒ¼sã‚‹ã®å復" +msgstr "クローズã•れãŸã‚«ãƒ¼ã‚½ãƒ«ã®å復" -#: plpy_cursorobject.c:348 plpy_cursorobject.c:415 +#: plpy_cursorobject.c:358 plpy_cursorobject.c:423 #, c-format msgid "iterating a cursor in an aborted subtransaction" msgstr "アボートã•れãŸã‚µãƒ–トランザクション内ã®ã‚«ãƒ¼ã‚½ãƒ«ã®å復" -#: plpy_cursorobject.c:407 +#: plpy_cursorobject.c:415 #, c-format msgid "fetch from a closed cursor" msgstr "クローズã•れãŸã‚«ãƒ¼ã‚½ãƒ«ã‹ã‚‰ã®ãƒ•ェッãƒ" -#: plpy_cursorobject.c:486 +#: plpy_cursorobject.c:463 plpy_spi.c:434 +#, c-format +msgid "query result has too many rows to fit in a Python list" +msgstr "å•ã„åˆã‚ã›çµæžœã®è¡ŒãŒå¤šã™ãŽã¦Pythonリストã«åŽã¾ã‚Šã¾ã›ã‚“" + +#: plpy_cursorobject.c:504 #, c-format msgid "closing a cursor in an aborted subtransaction" msgstr "アボートã•れãŸã‚µãƒ–トランザクションã«ãŠã‘るカーソルクローズ" -#: plpy_elog.c:103 plpy_elog.c:104 plpy_plpymodule.c:420 +#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:548 #, c-format msgid "%s" msgstr "%s" -#: plpy_exec.c:90 +#: plpy_exec.c:140 #, c-format msgid "unsupported set function return mode" msgstr "未サãƒãƒ¼ãƒˆã®é›†åˆé–¢æ•°ãƒªã‚¿ãƒ¼ãƒ³ãƒ¢ãƒ¼ãƒ‰ã§ã™" -#: plpy_exec.c:91 +#: plpy_exec.c:141 #, c-format -msgid "PL/Python set-returning functions only support returning only value per call." -msgstr "PL/Python ã®é›†åˆã‚’è¿”ã™é–¢æ•°ã§ã¯ã€ï¼‘回ã®ã‚³ãƒ¼ãƒ«ã®ãŸã³ã«å€¤ã ã‘ã‚’è¿”ã™ã“ã¨ãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™" +msgid "PL/Python set-returning functions only support returning one value per call." +msgstr "PL/Python ã®é›†åˆã‚’è¿”ã™é–¢æ•°ã§ã¯ã€ï¼‘回ã®ã‚³ãƒ¼ãƒ«ã®ãŸã³ã«å€¤ã‚’一ã¤è¿”ã™ã“ã¨ã ã‘ãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™" -#: plpy_exec.c:103 +#: plpy_exec.c:154 #, c-format msgid "returned object cannot be iterated" msgstr "è¿”ã•れãŸã‚ªãƒ–ジェクトã¯å復é©ç”¨ã§ãã¾ã›ã‚“" -#: plpy_exec.c:104 +#: plpy_exec.c:155 #, c-format msgid "PL/Python set-returning functions must return an iterable object." msgstr "PL/Python ã®é›†åˆã‚’è¿”ã™é–¢æ•°ã§ã¯ã€ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ï¼ˆå復å­ï¼‰ã‚ªãƒ–ジェクトを返ã•ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: plpy_exec.c:129 +#: plpy_exec.c:169 #, c-format msgid "error fetching next item from iterator" msgstr "イテレータ(å復å­ï¼‰ã‹ã‚‰æ¬¡ã®é …目をフェッãƒï¼ˆå–り出ã—)ã§ãã¾ã›ã‚“" -#: plpy_exec.c:164 +#: plpy_exec.c:210 #, c-format msgid "PL/Python function with return type \"void\" did not return None" msgstr "\"void\" 型を返㙠PL/Python 関数㯠None 型を返ã—ã¾ã›ã‚“" -#: plpy_exec.c:288 plpy_exec.c:314 +#: plpy_exec.c:374 plpy_exec.c:400 #, c-format msgid "unexpected return value from trigger procedure" msgstr "トリガー手続ãã‹ã‚‰æœŸå¾…ã—ãªã„戻り値ãŒè¿”ã•れã¾ã—ãŸ" -#: plpy_exec.c:289 +#: plpy_exec.c:375 #, c-format msgid "Expected None or a string." msgstr "None ã‚‚ã—ãã¯æ–‡å­—列を期待ã—ã¦ã„ã¾ã—ãŸã€‚" -#: plpy_exec.c:304 +#: plpy_exec.c:390 #, c-format msgid "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" msgstr "PL/Python トリガー関数ãŒã€DELETE トリガー㧠\"MODIFY\" ã‚’è¿”ã—ã¾ã—ãŸ-- 無視ã—ã¾ã—ãŸ" -#: plpy_exec.c:315 +#: plpy_exec.c:401 #, c-format msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." msgstr "None, \"OK\", \"SKIP\", \"MODIFY\" ã®ã„ãšã‚Œã‹ã‚’期待ã—ã¦ã„ã¾ã—ãŸã€‚" -#: plpy_exec.c:396 +#: plpy_exec.c:482 #, c-format msgid "PyList_SetItem() failed, while setting up arguments" msgstr "引数を設定ã™ã‚‹éš›ã«ã€PyList_SetItem() ã«å¤±æ•—ã—ã¾ã—ãŸ" -#: plpy_exec.c:400 +#: plpy_exec.c:486 #, c-format msgid "PyDict_SetItemString() failed, while setting up arguments" msgstr "引数を設定ã™ã‚‹éš›ã«ã€PyDict_SetItemString() ã«å¤±æ•—ã—ã¾ã—ãŸ" -#: plpy_exec.c:412 +#: plpy_exec.c:498 #, c-format msgid "function returning record called in context that cannot accept type record" msgstr "レコード型をå—ã‘付ã‘られãªã„コンテキストã§ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’è¿”ã™é–¢æ•°ãŒå‘¼ã³å‡ºã•れã¾ã—ãŸ" -#: plpy_exec.c:450 +#: plpy_exec.c:714 #, c-format msgid "while creating return value" msgstr "戻り値を生æˆã™ã‚‹éš›ã«" -#: plpy_exec.c:474 +#: plpy_exec.c:738 #, c-format msgid "could not create new dictionary while building trigger arguments" msgstr "トリガーã®å¼•æ•°ã‚’æ§‹æˆä¸­ã«ã€æ–°ã—ã„辞書を生æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_exec.c:664 +#: plpy_exec.c:927 #, c-format msgid "TD[\"new\"] deleted, cannot modify row" msgstr "TD[\"new\"] ã¯å‰Šé™¤ã•れã¾ã—ãŸã€‚ã‚‚ã¯ã‚„変更ã§ãã¾ã›ã‚“" -#: plpy_exec.c:667 +#: plpy_exec.c:932 #, c-format msgid "TD[\"new\"] is not a dictionary" msgstr "TD[\"new\"] ã¯è¾žæ›¸ã§ã¯ã‚りã¾ã›ã‚“" -#: plpy_exec.c:691 +#: plpy_exec.c:957 #, c-format msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" msgstr "TD[\"new\"] 辞書ã®%d番目ã®ã‚­ãƒ¼ãŒæ–‡å­—列ã§ã¯ã‚りã¾ã›ã‚“" -#: plpy_exec.c:697 +#: plpy_exec.c:964 #, c-format msgid "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering row" msgstr "TD[\"new\"] ã§è¦‹ã¤ã‹ã£ãŸã‚­ãƒ¼ \"%s\" ã¯ã€è¡Œãƒ¬ãƒ™ãƒ«ãƒˆãƒªã‚¬ãƒ¼ã«ãŠã‘るカラムã¨ã—ã¦ã¯å­˜åœ¨ã—ã¾ã›ã‚“" -#: plpy_exec.c:778 +#: plpy_exec.c:1044 #, c-format msgid "while modifying trigger row" msgstr "トリガー行を変更ã™ã‚‹éš›ã«" -#: plpy_exec.c:839 +#: plpy_exec.c:1105 #, c-format msgid "forcibly aborting a subtransaction that has not been exited" msgstr "終了ã—ã¦ã„ãªã„サブトランザクションを強制的ã«ã‚¢ãƒœãƒ¼ãƒˆã—ã¦ã„ã¾ã™" -#: plpy_main.c:100 -#, c-format -msgid "Python major version mismatch in session" -msgstr "セッションã«ãŠã„㦠Python ã®ãƒ¡ã‚¸ãƒ£ãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆè‡´ã—ã¾ã›ã‚“" - -#: plpy_main.c:101 +#: plpy_main.c:125 #, c-format -msgid "This session has previously used Python major version %d, and it is now attempting to use Python major version %d." -msgstr "ã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§ã¯ã™ã§ã« Python ã®ãƒ¡ã‚¸ãƒ£ãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d ãŒä½¿ã‚れã¦ã„ã¾ã—ãŸãŒã€ã“ã“ã§ Python ã®ãƒ¡ã‚¸ãƒ£ãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d を使ãŠã†ã¨ã—ã¦ã„ã¾ã™ã€‚" +msgid "multiple Python libraries are present in session" +msgstr "セッション内ã«è¤‡æ•°ã® Python ライブラリãŒå­˜åœ¨ã—ã¾ã™" -#: plpy_main.c:103 +#: plpy_main.c:126 #, c-format -msgid "Start a new session to use a different Python major version." -msgstr "Python ã®ç•°ãªã£ãŸãƒ¡ã‚¸ãƒ£ãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’使ã†å ´åˆã¯ã€æ–°ã—ã„セッションを開始ã—ã¦ãã ã•ã„" +msgid "Only one Python major version can be used in one session." +msgstr "一ã¤ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãŠã„ã¦ä½¿ã†ã“ã¨ãŒã§ãã‚‹ Python ã®ãƒ¡ã‚¸ãƒ£ãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ä¸€ã¤ã ã‘ã§ã™ã€‚" -#: plpy_main.c:118 +#: plpy_main.c:142 #, c-format msgid "untrapped error in initialization" msgstr "åˆæœŸåŒ–ä¸­ã«æ•ç²ã§ããªã„エラーãŒã‚りã¾ã—ãŸ" -#: plpy_main.c:141 +#: plpy_main.c:165 #, c-format msgid "could not import \"__main__\" module" msgstr "\"__main__\" モジュールをインãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_main.c:146 +#: plpy_main.c:170 #, c-format msgid "could not create globals" msgstr "globalsを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_main.c:150 +#: plpy_main.c:174 #, c-format msgid "could not initialize globals" msgstr "グローãƒãƒ«å¤‰æ•°(globals)ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_main.c:347 +#: plpy_main.c:387 #, c-format msgid "PL/Python function \"%s\"" msgstr "PL/Python 関数 \"%s\"" -#: plpy_main.c:354 +#: plpy_main.c:394 #, c-format msgid "PL/Python anonymous code block" msgstr "PL/Python ã®ç„¡åコードブロック" -#: plpy_planobject.c:126 +#: plpy_planobject.c:123 #, c-format msgid "plan.status takes no arguments" msgstr "plan.status ã¯å¼•æ•°ã‚’å–りã¾ã›ã‚“" -#: plpy_plpymodule.c:178 plpy_plpymodule.c:181 +#: plpy_plpymodule.c:181 plpy_plpymodule.c:184 #, c-format msgid "could not import \"plpy\" module" msgstr "\"plpy\"モジュールをインãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_plpymodule.c:196 +#: plpy_plpymodule.c:199 +#, c-format +msgid "could not create the spiexceptions module" +msgstr "spiexceptionsモジュールを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: plpy_plpymodule.c:207 #, c-format msgid "could not add the spiexceptions module" msgstr "spiexceptionsモジュールを追加ã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_plpymodule.c:217 +#: plpy_plpymodule.c:236 #, c-format -msgid "could not create the base SPI exceptions" -msgstr "基本SPI例外を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" +msgid "could not create exception \"%s\"" +msgstr "例外 \"%s\" を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_plpymodule.c:253 plpy_plpymodule.c:257 +#: plpy_plpymodule.c:271 plpy_plpymodule.c:275 #, c-format msgid "could not generate SPI exceptions" msgstr "SPI例外を生æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_plpymodule.c:388 +#: plpy_plpymodule.c:443 #, c-format msgid "could not unpack arguments in plpy.elog" msgstr "plpy.elogã§å¼•数を展開ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_plpymodule.c:396 +#: plpy_plpymodule.c:452 msgid "could not parse error message in plpy.elog" msgstr "plpy.elog ã§ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’パースã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_procedure.c:194 +#: plpy_plpymodule.c:469 +#, c-format +msgid "Argument 'message' given by name and position" +msgstr "åå‰ã¨ä½ç½®ã§ä¸Žãˆã‚‰ã‚Œã‚‹å¼•æ•° 'message'" + +#: plpy_plpymodule.c:496 +#, c-format +msgid "'%s' is an invalid keyword argument for this function" +msgstr "'%s' ã¯ã“ã®é–¢æ•°ã«ã¯ç„¡åйãªã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰å¼•æ•°ã§ã™" + +#: plpy_plpymodule.c:507 plpy_plpymodule.c:513 +#, c-format +msgid "invalid SQLSTATE code" +msgstr "無効㪠SQLSTATE コードã§ã™" + +#: plpy_procedure.c:230 #, c-format msgid "trigger functions can only be called as triggers" msgstr "トリガー関数ã¯ãƒˆãƒªã‚¬ãƒ¼ã¨ã—ã¦ã®ã¿ã‚³ãƒ¼ãƒ«ã§ãã¾ã™" -#: plpy_procedure.c:199 plpy_typeio.c:406 +#: plpy_procedure.c:235 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "PL/Python 関数㯠%s 型を返ã›ã¾ã›ã‚“" -#: plpy_procedure.c:281 +#: plpy_procedure.c:316 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "PL/Python 関数㯠%s 型をå—ã‘付ã‘ã¾ã›ã‚“" -#: plpy_procedure.c:377 +#: plpy_procedure.c:412 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "PL/Python 関数 \"%s\" をコンパイルã§ãã¾ã›ã‚“" -#: plpy_procedure.c:380 +#: plpy_procedure.c:415 #, c-format msgid "could not compile anonymous PL/Python code block" msgstr "PL/Python匿åコードブロックをコンパイルã§ãã¾ã›ã‚“" @@ -276,172 +296,143 @@ msgstr "PL/Python匿åコードブロックをコンパイルã§ãã¾ã›ã‚“" msgid "command did not produce a result set" msgstr "コマンドã¯çµæžœã‚»ãƒƒãƒˆã‚’生æˆã—ã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_spi.c:56 +#: plpy_spi.c:60 #, c-format msgid "second argument of plpy.prepare must be a sequence" msgstr "plpy.prepare ã®ç¬¬äºŒå¼•æ•°ã¯ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: plpy_spi.c:105 +#: plpy_spi.c:116 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare: %d 番目ã®åž‹åãŒæ–‡å­—列ã§ã¯ã‚りã¾ã›ã‚“" -#: plpy_spi.c:137 -#, c-format -msgid "plpy.prepare does not support composite types" -msgstr "plpy.prepare ã¯è¤‡åˆåž‹ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" - -#: plpy_spi.c:187 +#: plpy_spi.c:192 #, c-format msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute ã¯ã‚¯ã‚¨ãƒªãƒ¼ã‚‚ã—ãã¯å®Ÿè¡Œè¨ˆç”»ã‚’期待ã—ã¦ã„ã¾ã—ãŸ" -#: plpy_spi.c:206 +#: plpy_spi.c:211 #, c-format msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute ã¯ç¬¬äºŒå¼•æ•°ã¨ã—ã¦ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚’å–りã¾ã™" -#: plpy_spi.c:330 +#: plpy_spi.c:335 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "SPI_execute_plan ãŒå¤±æ•—ã—ã¾ã—ãŸï¼š%s" -#: plpy_spi.c:372 +#: plpy_spi.c:377 #, c-format msgid "SPI_execute failed: %s" msgstr "SPI_execute ãŒå¤±æ•—ã—ã¾ã—ãŸï¼š%s" -#: plpy_spi.c:439 -#, c-format -msgid "unrecognized error in PLy_spi_execute_fetch_result" -msgstr "PLy_spi_execute_fetch_result ã§èªè­˜ã§ããªã„エラーを検出ã—ã¾ã—ãŸ" - -#: plpy_subxactobject.c:122 +#: plpy_subxactobject.c:123 #, c-format msgid "this subtransaction has already been entered" msgstr "ã“ã®ã‚µãƒ–トランザクションã¯åˆ°é”済ã¿ã§ã™" -#: plpy_subxactobject.c:128 plpy_subxactobject.c:180 +#: plpy_subxactobject.c:129 plpy_subxactobject.c:187 #, c-format msgid "this subtransaction has already been exited" msgstr "ã“ã®ã‚µãƒ–トランザクションã¯çµ‚了済ã¿ã§ã™" -#: plpy_subxactobject.c:174 +#: plpy_subxactobject.c:181 #, c-format msgid "this subtransaction has not been entered" msgstr "ã“ã®ã‚µãƒ–トランザクションã«ã¯åˆ°é”ã—ã¾ã›ã‚“" -#: plpy_subxactobject.c:186 +#: plpy_subxactobject.c:193 #, c-format msgid "there is no subtransaction to exit from" msgstr "終了ã™ã‚‹ãŸã‚ã®ã‚µãƒ–トランザクションãŒã‚りã¾ã›ã‚“" -#: plpy_typeio.c:291 +#: plpy_typeio.c:286 #, c-format msgid "could not create new dictionary" msgstr "æ–°ã—ã„ディレクトリを作れã¾ã›ã‚“" -#: plpy_typeio.c:408 +#: plpy_typeio.c:560 +#, c-format +msgid "could not import a module for Decimal constructor" +msgstr "Decimalコンストラクタã«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’インãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: plpy_typeio.c:564 #, c-format -msgid "PL/Python does not support conversion to arrays of row types." -msgstr "PL/Python ã¯è¡Œã‚¿ã‚¤ãƒ—é…列ã¸ã®å¤‰æ›ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" +msgid "no Decimal attribute in module" +msgstr "モジュールã®ä¸­ã«Decimal属性ãŒã‚りã¾ã›ã‚“" -#: plpy_typeio.c:584 +#: plpy_typeio.c:570 +#, c-format +msgid "conversion from numeric to Decimal failed" +msgstr "numericã‹ã‚‰Decimalã¸ã®å¤‰æ›ãŒå¤±æ•—ã—ã¾ã—ãŸ" + +#: plpy_typeio.c:645 #, c-format msgid "cannot convert multidimensional array to Python list" msgstr "多次元é…列を Python ã® list ã«å¤‰æ›ã§ãã¾ã›ã‚“" -#: plpy_typeio.c:585 +#: plpy_typeio.c:646 #, c-format msgid "PL/Python only supports one-dimensional arrays." msgstr "PL/Python ã§ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ã®ã¯ä¸€æ¬¡å…ƒé…列ã®ã¿ã§ã™ã€‚" -#: plpy_typeio.c:591 +#: plpy_typeio.c:652 #, c-format msgid "could not create new Python list" msgstr "æ–°ã—ã„Pythonリストを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_typeio.c:650 +#: plpy_typeio.c:711 #, c-format msgid "could not create bytes representation of Python object" msgstr "ãƒã‚¤ãƒˆè¡¨ç¾ã® Python オブジェクトを生æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_typeio.c:742 +#: plpy_typeio.c:820 #, c-format msgid "could not create string representation of Python object" msgstr "文字列表ç¾ã® Python オブジェクトを生æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_typeio.c:753 +#: plpy_typeio.c:831 #, c-format msgid "could not convert Python object into cstring: Python string representation appears to contain null bytes" msgstr "Python オブジェクトを cstring ã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸï¼šPython ã®æ–‡å­—列表ç¾ãŒ null ãƒã‚¤ãƒˆã‚’æŒã¤ã“ã¨ã«ãªã£ã¦ã—ã¾ã„ã¾ã™" -#: plpy_typeio.c:787 +#: plpy_typeio.c:877 #, c-format msgid "return value of function with array return type is not a Python sequence" msgstr "戻り値ãŒé…列ã§ã‚ã‚‹é–¢æ•°ã®æˆ»ã‚Šå€¤ãŒ Python シーケンスã§ã¯ã‚りã¾ã›ã‚“" -#: plpy_typeio.c:886 +#: plpy_typeio.c:996 #, c-format msgid "key \"%s\" not found in mapping" msgstr "マッピング上ã«ã‚­ãƒ¼ \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: plpy_typeio.c:887 +#: plpy_typeio.c:997 #, c-format msgid "To return null in a column, add the value None to the mapping with the key named after the column." msgstr "カラム㫠null を入れã¦è¿”ã™ã«ã¯ã€ã‚«ãƒ©ãƒ ã®å¾Œã«ã¤ã‘ãŸåå‰ã‚’キーã¨ã—ã¦ã€ãƒžãƒƒãƒ”ング㫠None 値を追加ã—ã¦ãã ã•ã„" -#: plpy_typeio.c:935 +#: plpy_typeio.c:1048 #, c-format msgid "length of returned sequence did not match number of columns in row" msgstr "è¿”ã•れãŸã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã®é•·ã•ãŒã€ãã®è¡Œã®ã‚«ãƒ©ãƒ æ•°ã¨ç•°ãªã‚Šã¾ã™" -#: plpy_typeio.c:1043 +#: plpy_typeio.c:1159 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "属性 \"%s\" ㌠Python オブジェクト中ã«å­˜åœ¨ã—ã¾ã›ã‚“" -#: plpy_typeio.c:1044 +#: plpy_typeio.c:1160 #, c-format msgid "To return null in a column, let the returned object have an attribute named after column with value None." msgstr "カラム㫠null を入れã¦è¿”ã™å ´åˆã¯ã€ãã®ã‚«ãƒ©ãƒ ã®å¾Œã«ã¤ã‘ãŸåå‰ã§è¡¨ã•れる属性ãŒå€¤ã¨ã—㦠None ã‚’æŒã¡ã€è¿”ã•れるオブジェクトãŒãã®å±žæ€§ã‚’å«ã‚€ã‚ˆã†ã«ã—ã¦ãã ã•ã„" -#: plpy_util.c:70 +#: plpy_util.c:36 #, c-format msgid "could not convert Python Unicode object to bytes" msgstr "Pythonã®Unicodeオブジェクトをãƒã‚¤ãƒˆã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: plpy_util.c:75 +#: plpy_util.c:42 #, c-format msgid "could not extract bytes from encoded string" msgstr "符å·åŒ–ã•ã‚ŒãŸæ–‡å­—列ã‹ã‚‰ãƒã‚¤ãƒˆã‚’抽出ã§ãã¾ã›ã‚“ã§ã—ãŸ" -#~ msgid "PyCObject_AsVoidPtr() failed" -#~ msgstr "PyCObject_AsVoidPtr() ã«å¤±æ•—ã—ã¾ã—ãŸ" - -#~ msgid "invalid arguments for plpy.prepare" -#~ msgstr "plpy.prepare ã®å¼•æ•°ãŒä¸æ­£ã§ã™" - -#~ msgid "PyCObject_FromVoidPtr() failed" -#~ msgstr "PyCObject_FromVoidPtr() ã«å¤±æ•—ã—ã¾ã—ãŸ" - -#~ msgid "unrecognized error in PLy_spi_prepare" -#~ msgstr "PLy_spi_prepare ã§èªè­˜ã§ããªã„エラーを検出ã—ã¾ã—ãŸ" - -#~ msgid "transaction aborted" -#~ msgstr "トランザクションãŒã‚¢ãƒœãƒ¼ãƒˆã—ã¾ã—ãŸ" - -#~ msgid "could not create procedure cache" -#~ msgstr "手続ã用キャッシュ(procedure cache)を生æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" - -#~ msgid "PL/Python: %s" -#~ msgstr "PL/Python: %s" - -#~ msgid "out of memory" -#~ msgstr "メモリä¸è¶³ã§ã™" - -#~ msgid "unrecognized error in PLy_spi_execute_plan" -#~ msgstr "PLy_spi_execute_plan ã§èªè­˜ã§ããªã„エラーを検出ã—ã¾ã—ãŸ" - -#~ msgid "unrecognized error in PLy_spi_execute_query" -#~ msgstr "PLy_spi_execute_query ã§èªè­˜ã§ããªã„エラーを検出ã—ã¾ã—ãŸ" diff --git a/src/pl/plpython/po/pt_BR.po b/src/pl/plpython/po/pt_BR.po index 5ea66785f3..f0ca2a0419 100644 --- a/src/pl/plpython/po/pt_BR.po +++ b/src/pl/plpython/po/pt_BR.po @@ -1,13 +1,13 @@ # Brazilian Portuguese message translation file for plpython # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2009-2016. +# Euler Taveira de Oliveira , 2009-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:09-0300\n" "PO-Revision-Date: 2009-05-10 01:15-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -22,49 +22,49 @@ msgstr "" msgid "plpy.cursor expected a query or a plan" msgstr "plpy.cursor esperava uma consulta ou um plano" -#: plpy_cursorobject.c:179 +#: plpy_cursorobject.c:177 #, c-format msgid "plpy.cursor takes a sequence as its second argument" msgstr "plpy.cursor tem uma sequência como seu segundo argumento" -#: plpy_cursorobject.c:195 plpy_spi.c:229 +#: plpy_cursorobject.c:193 plpy_spi.c:227 #, c-format msgid "could not execute plan" msgstr "não pôde executar plano" -#: plpy_cursorobject.c:198 plpy_spi.c:232 +#: plpy_cursorobject.c:196 plpy_spi.c:230 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" msgstr[0] "Sequência esperada de %d argumento, recebeu %d: %s" msgstr[1] "Sequência esperada de %d argumentos, recebeu %d: %s" -#: plpy_cursorobject.c:354 +#: plpy_cursorobject.c:350 #, c-format msgid "iterating a closed cursor" msgstr "iterando um cursor fechado" -#: plpy_cursorobject.c:362 plpy_cursorobject.c:427 +#: plpy_cursorobject.c:358 plpy_cursorobject.c:423 #, c-format msgid "iterating a cursor in an aborted subtransaction" msgstr "iterando um cursor em uma subtransação abortada" -#: plpy_cursorobject.c:419 +#: plpy_cursorobject.c:415 #, c-format msgid "fetch from a closed cursor" msgstr "busca em um cursor fechado" -#: plpy_cursorobject.c:467 plpy_spi.c:438 +#: plpy_cursorobject.c:463 plpy_spi.c:434 #, c-format msgid "query result has too many rows to fit in a Python list" msgstr "resultado da consulta tem muitos registros para caber em uma lista Python" -#: plpy_cursorobject.c:508 +#: plpy_cursorobject.c:504 #, c-format msgid "closing a cursor in an aborted subtransaction" msgstr "fechando um cursor em uma subtransação abortada" -#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:527 +#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:548 #, c-format msgid "%s" msgstr "%s" @@ -204,12 +204,12 @@ msgstr "não pôde criar globais" msgid "could not initialize globals" msgstr "não pôde inicializar globais" -#: plpy_main.c:389 +#: plpy_main.c:387 #, c-format msgid "PL/Python function \"%s\"" msgstr "função PL/Python \"%s\"" -#: plpy_main.c:396 +#: plpy_main.c:394 #, c-format msgid "PL/Python anonymous code block" msgstr "bloco de código PL/Python anônimo" @@ -219,71 +219,76 @@ msgstr "bloco de código PL/Python anônimo" msgid "plan.status takes no arguments" msgstr "plan.status não contém argumentos" -#: plpy_plpymodule.c:178 plpy_plpymodule.c:181 +#: plpy_plpymodule.c:181 plpy_plpymodule.c:184 #, c-format msgid "could not import \"plpy\" module" msgstr "não pôde importar módulo \"plpy\"" -#: plpy_plpymodule.c:196 +#: plpy_plpymodule.c:199 +#, c-format +msgid "could not create the spiexceptions module" +msgstr "não pôde criar o módulo spiexceptions" + +#: plpy_plpymodule.c:207 #, c-format msgid "could not add the spiexceptions module" msgstr "não pôde adicionar o módulo spiexceptions" -#: plpy_plpymodule.c:217 +#: plpy_plpymodule.c:236 #, c-format -msgid "could not create the base SPI exceptions" -msgstr "não pôde criar as exceções base da SPI" +msgid "could not create exception \"%s\"" +msgstr "não pôde criar exceção \"%s\"" -#: plpy_plpymodule.c:252 plpy_plpymodule.c:256 +#: plpy_plpymodule.c:271 plpy_plpymodule.c:275 #, c-format msgid "could not generate SPI exceptions" msgstr "não pôde gerar exceções da SPI" -#: plpy_plpymodule.c:422 +#: plpy_plpymodule.c:443 #, c-format msgid "could not unpack arguments in plpy.elog" msgstr "não pode desempacotar argumentos em plpy.elog" -#: plpy_plpymodule.c:431 +#: plpy_plpymodule.c:452 msgid "could not parse error message in plpy.elog" msgstr "não pode analisar mensagem de erro em plpy.elog" -#: plpy_plpymodule.c:448 +#: plpy_plpymodule.c:469 #, c-format msgid "Argument 'message' given by name and position" msgstr "Argumento 'message' informado por nome e posição" -#: plpy_plpymodule.c:475 +#: plpy_plpymodule.c:496 #, c-format msgid "'%s' is an invalid keyword argument for this function" msgstr "'%s' é um argumento inválido para esta função" -#: plpy_plpymodule.c:486 plpy_plpymodule.c:492 +#: plpy_plpymodule.c:507 plpy_plpymodule.c:513 #, c-format msgid "invalid SQLSTATE code" msgstr "código SQLSTATE inválido" -#: plpy_procedure.c:232 +#: plpy_procedure.c:230 #, c-format msgid "trigger functions can only be called as triggers" msgstr "funções de gatilho só podem ser chamadas como gatilhos" -#: plpy_procedure.c:237 +#: plpy_procedure.c:235 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "funções PL/Python não podem retornar tipo %s" -#: plpy_procedure.c:318 +#: plpy_procedure.c:316 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "funções PL/Python não podem aceitar tipo %s" -#: plpy_procedure.c:414 +#: plpy_procedure.c:412 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "não pôde compilar função PL/Python \"%s\"" -#: plpy_procedure.c:417 +#: plpy_procedure.c:415 #, c-format msgid "could not compile anonymous PL/Python code block" msgstr "não pôde compilar bloco de código PL/Python anônimo" @@ -298,27 +303,27 @@ msgstr "comando não produziu um conjunto de resultados" msgid "second argument of plpy.prepare must be a sequence" msgstr "segundo argumento de plpy.prepare deve ser uma sequência" -#: plpy_spi.c:118 +#: plpy_spi.c:116 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare: nome do tipo na posição %d não é uma cadeia de caracteres" -#: plpy_spi.c:194 +#: plpy_spi.c:192 #, c-format msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute espera uma consulta ou um plano" -#: plpy_spi.c:213 +#: plpy_spi.c:211 #, c-format msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute recebe uma sequência como segundo argumento" -#: plpy_spi.c:337 +#: plpy_spi.c:335 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "SPI_execute_plan falhou: %s" -#: plpy_spi.c:379 +#: plpy_spi.c:377 #, c-format msgid "SPI_execute failed: %s" msgstr "SPI_execute falhou: %s" @@ -383,42 +388,42 @@ msgstr "não pôde criar nova lista Python" msgid "could not create bytes representation of Python object" msgstr "não pôde criar representação de bytes de um objeto Python" -#: plpy_typeio.c:822 +#: plpy_typeio.c:820 #, c-format msgid "could not create string representation of Python object" msgstr "não pôde criar representação de cadeia de caracteres de um objeto Python" -#: plpy_typeio.c:833 +#: plpy_typeio.c:831 #, c-format msgid "could not convert Python object into cstring: Python string representation appears to contain null bytes" msgstr "não pôde converter objeto Python em cstring: representação de cadeia de caracteres Python parece conter bytes nulos" -#: plpy_typeio.c:879 +#: plpy_typeio.c:877 #, c-format msgid "return value of function with array return type is not a Python sequence" msgstr "valor de retorno da função do tipo matriz retorna tipo que não é uma sequência Python" -#: plpy_typeio.c:1000 +#: plpy_typeio.c:996 #, c-format msgid "key \"%s\" not found in mapping" msgstr "chave \"%s\" não foi encontrada no mapeamento" -#: plpy_typeio.c:1001 +#: plpy_typeio.c:997 #, c-format msgid "To return null in a column, add the value None to the mapping with the key named after the column." msgstr "Para retornar nulo em uma coluna, adicionar o valor None no mapeamento cuja chave é o nome da coluna." -#: plpy_typeio.c:1052 +#: plpy_typeio.c:1048 #, c-format msgid "length of returned sequence did not match number of columns in row" msgstr "tamanho da sequência retornada não combina com número de colunas no registro" -#: plpy_typeio.c:1163 +#: plpy_typeio.c:1159 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "atributo \"%s\" não existe no objeto Python" -#: plpy_typeio.c:1164 +#: plpy_typeio.c:1160 #, c-format msgid "To return null in a column, let the returned object have an attribute named after column with value None." msgstr "Para retornar nulo na coluna, deixe o objeto retornado ter um atributo cuja chave é o nome do coluna e o valor é None." diff --git a/src/pl/plpython/po/ru.po b/src/pl/plpython/po/ru.po index fcca12acbb..df85d196db 100644 --- a/src/pl/plpython/po/ru.po +++ b/src/pl/plpython/po/ru.po @@ -1,14 +1,15 @@ # Russian message translation file for plpython # Copyright (C) 2012-2016 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2012-2016, 2017. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: plpython (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-02-01 23:07+0000\n" +"POT-Creation-Date: 2017-02-06 22:07+0000\n" "PO-Revision-Date: 2017-02-02 15:21+0300\n" +"Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" @@ -16,7 +17,6 @@ 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" #: plpy_cursorobject.c:101 #, c-format diff --git a/src/pl/tcl/po/es.po b/src/pl/tcl/po/es.po index 87c5867b64..d4faaa480f 100644 --- a/src/pl/tcl/po/es.po +++ b/src/pl/tcl/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: pltcl (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:46+0000\n" "PO-Revision-Date: 2016-05-03 12:17-0300\n" "Last-Translator: Ãlvaro Herrera \n" "Language-Team: PgSQL-es-Ayuda \n" @@ -39,22 +39,22 @@ msgstr "no se pudo separar el valor de retorno del disparador: %s" msgid "trigger's return list must have even number of elements" msgstr "la lista de retorno del disparador debe tener un número par de elementos" -#: pltcl.c:1109 +#: pltcl.c:1110 #, c-format msgid "unrecognized attribute \"%s\"" msgstr "atributo «%s» no reconocido" -#: pltcl.c:1114 +#: pltcl.c:1116 #, c-format msgid "cannot set system attribute \"%s\"" msgstr "no se puede definir el atributo de sistema «%s»" -#: pltcl.c:1230 pltcl.c:1655 +#: pltcl.c:1232 pltcl.c:1657 #, c-format msgid "%s" msgstr "%s" -#: pltcl.c:1231 +#: pltcl.c:1233 #, c-format msgid "" "%s\n" @@ -63,32 +63,32 @@ msgstr "" "%s\n" "en función PL/Tcl \"%s\"" -#: pltcl.c:1338 pltcl.c:1345 +#: pltcl.c:1340 pltcl.c:1347 #, c-format msgid "out of memory" msgstr "memoria agotada" -#: pltcl.c:1393 +#: pltcl.c:1395 #, c-format msgid "trigger functions can only be called as triggers" msgstr "las funciones disparadoras sólo pueden ser invocadas como disparadores" -#: pltcl.c:1402 +#: pltcl.c:1404 #, c-format msgid "PL/Tcl functions cannot return type %s" msgstr "las funciones PL/Tcl no pueden retornar tipo %s" -#: pltcl.c:1414 +#: pltcl.c:1416 #, c-format msgid "PL/Tcl functions cannot return composite types" msgstr "las funciones PL/Tcl no pueden retornar tipos compuestos" -#: pltcl.c:1453 +#: pltcl.c:1455 #, c-format msgid "PL/Tcl functions cannot accept type %s" msgstr "las funciones PL/Tcl no pueden aceptar el tipog%s" -#: pltcl.c:1576 +#: pltcl.c:1578 #, c-format msgid "could not create internal procedure \"%s\": %s" msgstr "no se pudo crear procedimiento interno «%s»: %s" diff --git a/src/pl/tcl/po/ru.po b/src/pl/tcl/po/ru.po index 701a377388..7e07de69fe 100644 --- a/src/pl/tcl/po/ru.po +++ b/src/pl/tcl/po/ru.po @@ -1,7 +1,7 @@ # Russian message translation file for pltcl # 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/port/noblock.c b/src/port/noblock.c index 52e1d71d9d..959d3ada86 100644 --- a/src/port/noblock.c +++ b/src/port/noblock.c @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------- * * noblock.c - * set a file descriptor as non-blocking + * set a file descriptor as blocking or non-blocking * * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -17,11 +17,22 @@ #include +/* + * Put socket into nonblock mode. + * Returns true on success, false on failure. + */ bool pg_set_noblock(pgsocket sock) { #if !defined(WIN32) - return (fcntl(sock, F_SETFL, O_NONBLOCK) != -1); + int flags; + + flags = fcntl(sock, F_GETFL); + if (flags < 0) + return false; + if (fcntl(sock, F_SETFL, (flags | O_NONBLOCK)) == -1) + return false; + return true; #else unsigned long ioctlsocket_ret = 1; @@ -30,7 +41,10 @@ pg_set_noblock(pgsocket sock) #endif } - +/* + * Put socket into blocking mode. + * Returns true on success, false on failure. + */ bool pg_set_block(pgsocket sock) { @@ -38,7 +52,9 @@ pg_set_block(pgsocket sock) int flags; flags = fcntl(sock, F_GETFL); - if (flags < 0 || fcntl(sock, F_SETFL, (long) (flags & ~O_NONBLOCK))) + if (flags < 0) + return false; + if (fcntl(sock, F_SETFL, (flags & ~O_NONBLOCK)) == -1) return false; return true; #else diff --git a/src/port/pqsignal.c b/src/port/pqsignal.c index e5a73f2274..07797f909a 100644 --- a/src/port/pqsignal.c +++ b/src/port/pqsignal.c @@ -32,7 +32,7 @@ #if !defined(WIN32) || defined(FRONTEND) /* - * Set up a signal handler for signal "signo" + * Set up a signal handler, with SA_RESTART, for signal "signo" * * Returns the previous handler. */ @@ -58,4 +58,33 @@ pqsignal(int signo, pqsigfunc func) #endif } +/* + * Set up a signal handler, without SA_RESTART, for signal "signo" + * + * Returns the previous handler. + * + * On Windows, this would be identical to pqsignal(), so don't bother. + */ +#ifndef WIN32 + +pqsigfunc +pqsignal_no_restart(int signo, pqsigfunc func) +{ + struct sigaction act, + oact; + + act.sa_handler = func; + sigemptyset(&act.sa_mask); + act.sa_flags = 0; +#ifdef SA_NOCLDSTOP + if (signo == SIGCHLD) + act.sa_flags |= SA_NOCLDSTOP; +#endif + if (sigaction(signo, &act, &oact) < 0) + return SIG_ERR; + return oact.sa_handler; +} + +#endif /* !WIN32 */ + #endif /* !defined(WIN32) || defined(FRONTEND) */ diff --git a/src/port/win32ver.rc b/src/port/win32ver.rc index c8fd08cbe8..2b99e094c2 100644 --- a/src/port/win32ver.rc +++ b/src/port/win32ver.rc @@ -2,8 +2,8 @@ #include "pg_config.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 9,6,2,0 - PRODUCTVERSION 9,6,2,0 + FILEVERSION 9,6,5,0 + PRODUCTVERSION 9,6,5,0 FILEFLAGSMASK 0x17L FILEFLAGS 0x0L FILEOS VOS_NT_WINDOWS32 diff --git a/src/test/modules/commit_ts/t/001_base.pl b/src/test/modules/commit_ts/t/001_base.pl index 427092cfc5..9290a85d89 100644 --- a/src/test/modules/commit_ts/t/001_base.pl +++ b/src/test/modules/commit_ts/t/001_base.pl @@ -7,7 +7,7 @@ use Test::More tests => 2; use PostgresNode; -my $node = get_new_node(); +my $node = get_new_node('foxtrot'); $node->init; $node->append_conf('postgresql.conf', 'track_commit_timestamp = on'); $node->start; diff --git a/src/test/modules/test_extensions/test_ext3--1.0.sql b/src/test/modules/test_extensions/test_ext3--1.0.sql index 7dec684dcb..4fcb63d2bc 100644 --- a/src/test/modules/test_extensions/test_ext3--1.0.sql +++ b/src/test/modules/test_extensions/test_ext3--1.0.sql @@ -1,3 +1,9 @@ /* src/test/modules/test_extensions/test_ext3--1.0.sql */ -- complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "CREATE EXTENSION test_ext3" to load this file. \quit + +CREATE TABLE test_ext3_table (col_old INT); + +ALTER TABLE test_ext3_table RENAME col_old TO col_new; + +UPDATE test_ext3_table SET col_new = 0; diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index bd627b29de..8ec843edea 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -9,7 +9,7 @@ PostgresNode - class representing PostgreSQL server instance use PostgresNode; - my $node = get_new_node('mynode'); + my $node = PostgresNode->get_new_node('mynode'); # Create a data directory with initdb $node->init(); @@ -101,6 +101,15 @@ our @EXPORT = qw( our ($test_localhost, $test_pghost, $last_port_assigned, @all_nodes); +# Windows path to virtual file system root + +our $vfs_path = ''; +if ($Config{osname} eq 'msys') +{ + $vfs_path = `cd / && pwd -W`; + chomp $vfs_path; +} + INIT { @@ -402,7 +411,9 @@ sub init open my $conf, ">>$pgdata/postgresql.conf"; print $conf "\n# Added by PostgresNode.pm\n"; print $conf "fsync = off\n"; + print $conf "restart_after_crash = off\n"; print $conf "log_statement = all\n"; + print $conf "wal_retrieve_retry_interval = '500ms'\n"; print $conf "port = $port\n"; if ($params{allows_streaming}) @@ -441,7 +452,7 @@ A shortcut method to append to files like pg_hba.conf and postgresql.conf. Does no validation or sanity checking. Does not reload the configuration after writing. -A newline is NOT automatically appended to the string. +A newline is automatically appended to the string. =cut @@ -451,7 +462,7 @@ sub append_conf my $conffile = $self->data_dir . '/' . $filename; - TestLib::append_to_file($conffile, $str); + TestLib::append_to_file($conffile, $str . "\n"); } =pod @@ -636,18 +647,19 @@ sub start my $port = $self->port; my $pgdata = $self->data_dir; my $name = $self->name; + BAIL_OUT("node \"$name\" is already running") if defined $self->{_pid}; print("### Starting node \"$name\"\n"); my $ret = TestLib::system_log('pg_ctl', '-w', '-D', $self->data_dir, '-l', $self->logfile, 'start'); if ($ret != 0) { - print "# pg_ctl failed; logfile:\n"; + print "# pg_ctl start failed; logfile:\n"; print TestLib::slurp_file($self->logfile); - BAIL_OUT("pg_ctl failed"); + BAIL_OUT("pg_ctl start failed"); } - $self->_update_pid; + $self->_update_pid(1); } =pod @@ -656,6 +668,10 @@ sub start Stop the node using pg_ctl -m $mode and wait for it to stop. +Note: if the node is already known stopped, this does nothing. +However, if we think it's running and it's not, it's important for +this to fail. Otherwise, tests might fail to detect server crashes. + =cut sub stop @@ -667,9 +683,8 @@ sub stop $mode = 'fast' unless defined $mode; return unless defined $self->{_pid}; print "### Stopping node \"$name\" using mode $mode\n"; - TestLib::system_log('pg_ctl', '-D', $pgdata, '-m', $mode, 'stop'); - $self->{_pid} = undef; - $self->_update_pid; + TestLib::system_or_bail('pg_ctl', '-D', $pgdata, '-m', $mode, 'stop'); + $self->_update_pid(0); } =pod @@ -687,7 +702,7 @@ sub reload my $pgdata = $self->data_dir; my $name = $self->name; print "### Reloading node \"$name\"\n"; - TestLib::system_log('pg_ctl', '-D', $pgdata, 'reload'); + TestLib::system_or_bail('pg_ctl', '-D', $pgdata, 'reload'); } =pod @@ -706,9 +721,9 @@ sub restart my $logfile = $self->logfile; my $name = $self->name; print "### Restarting node \"$name\"\n"; - TestLib::system_log('pg_ctl', '-D', $pgdata, '-w', '-l', $logfile, - 'restart'); - $self->_update_pid; + TestLib::system_or_bail('pg_ctl', '-D', $pgdata, '-w', '-l', $logfile, + 'restart'); + $self->_update_pid(1); } =pod @@ -727,7 +742,8 @@ sub promote my $logfile = $self->logfile; my $name = $self->name; print "### Promoting node \"$name\"\n"; - TestLib::system_log('pg_ctl', '-D', $pgdata, '-l', $logfile, 'promote'); + TestLib::system_or_bail('pg_ctl', '-D', $pgdata, '-l', $logfile, + 'promote'); } # Internal routine to enable streaming replication on a standby node. @@ -749,7 +765,7 @@ standby_mode=on sub enable_restoring { my ($self, $root_node) = @_; - my $path = $root_node->archive_dir; + my $path = $vfs_path . $root_node->archive_dir; my $name = $self->name; print "### Enabling WAL restore for node \"$name\"\n"; @@ -777,7 +793,7 @@ standby_mode = on sub enable_archiving { my ($self) = @_; - my $path = $self->archive_dir; + my $path = $vfs_path. $self->archive_dir; my $name = $self->name; print "### Enabling WAL archiving for node \"$name\"\n"; @@ -805,40 +821,48 @@ archive_command = '$copy_command' # Internal method sub _update_pid { - my $self = shift; + my ($self, $is_running) = @_; my $name = $self->name; # If we can open the PID file, read its first line and that's the PID we - # want. If the file cannot be opened, presumably the server is not - # running; don't be noisy in that case. - if (open my $pidfile, $self->data_dir . "/postmaster.pid") + # want. + if (open my $pidfile, '<', $self->data_dir . "/postmaster.pid") { chomp($self->{_pid} = <$pidfile>); print "# Postmaster PID for node \"$name\" is $self->{_pid}\n"; close $pidfile; + + # If we found a pidfile when there shouldn't be one, complain. + BAIL_OUT("postmaster.pid unexpectedly present") unless $is_running; return; } $self->{_pid} = undef; - print "# No postmaster PID\n"; + print "# No postmaster PID for node \"$name\"\n"; + # Complain if we expected to find a pidfile. + BAIL_OUT("postmaster.pid unexpectedly not present") if $is_running; } =pod -=item get_new_node(node_name) +=item PostgresNode->get_new_node(node_name) -Build a new PostgresNode object, assigning a free port number. Standalone -function that's automatically imported. +Build a new object of class C (or of a subclass, if you have +one), assigning a free port number. Remembers the node, to prevent its port +number from being reused for another node, and to ensure that it gets +shut down when the test script exits. -Remembers the node, to prevent its port number from being reused for another -node, and to ensure that it gets shut down when the test script exits. +You should generally use this instead of C. -You should generally use this instead of PostgresNode::new(...). +For backwards compatibility, it is also exported as a standalone function, +which can only create objects of class C. =cut sub get_new_node { + my $class = 'PostgresNode'; + $class = shift if 1 < scalar @_; my $name = shift; my $found = 0; my $port = $last_port_assigned; @@ -883,7 +907,7 @@ sub get_new_node print "# Found free port $port\n"; # Lock port number found by creating a new node - my $node = new PostgresNode($name, $test_pghost, $port); + my $node = $class->new($name, $test_pghost, $port); # Add node to list of nodes push(@all_nodes, $node); @@ -961,6 +985,7 @@ sub safe_psql print "\n#### End standard error\n"; } + $stdout =~ s/\r//g if $TestLib::windows_os; return $stdout; } diff --git a/src/test/perl/README b/src/test/perl/README index 710a0d8bc3..cbee418e14 100644 --- a/src/test/perl/README +++ b/src/test/perl/README @@ -14,6 +14,11 @@ src/test/ssl, or should be added to one of the suites for an existing utility. Note that all tests and test tools should have perltidy run on them before patches are submitted, using perltidy --profile=src/tools/pgindent/perltidyrc +By default, to keep the noise low during runs, we do not set any flags via +PROVE_FLAGS, but this can be done on the 'make' command line if desired, eg: + +make check-world PROVE_FLAGS='--verbose' + Writing tests ------------- @@ -37,7 +42,7 @@ Each test script should begin with: then it will generally need to set up one or more nodes, run commands against them and evaluate the results. For example: - my $node = get_new_node('master'); + my $node = PostgresNode->get_new_node('master'); $node->init; $node->start; diff --git a/src/test/perl/RecursiveCopy.pm b/src/test/perl/RecursiveCopy.pm index 3e98813286..8be9211c11 100644 --- a/src/test/perl/RecursiveCopy.pm +++ b/src/test/perl/RecursiveCopy.pm @@ -29,12 +29,17 @@ use File::Copy; =head2 copypath($from, $to, %params) Recursively copy all files and directories from $from to $to. +Does not preserve file metadata (e.g., permissions). Only regular files and subdirectories are copied. Trying to copy other types of directory entries raises an exception. Raises an exception if a file would be overwritten, the source directory can't -be read, or any I/O operation fails. Always returns true. +be read, or any I/O operation fails. However, we silently ignore ENOENT on +open, because when copying from a live database it's possible for a file/dir +to be deleted after we see its directory entry but before we can open it. + +Always returns true. If the B parameter is given, it must be a subroutine reference. This subroutine will be called for each entry in the source directory with its @@ -74,6 +79,9 @@ sub copypath $filterfn = sub { return 1; }; } + # Complain if original path is bogus, because _copypath_recurse won't. + die "\"$base_src_dir\" does not exist" if !-e $base_src_dir; + # Start recursive copy from current directory return _copypath_recurse($base_src_dir, $base_dest_dir, "", $filterfn); } @@ -89,12 +97,8 @@ sub _copypath_recurse return 1 unless &$filterfn($curr_path); # Check for symlink -- needed only on source dir - die "Cannot operate on symlinks" if -l $srcpath; - - # Can't handle symlinks or other weird things - die "Source path \"$srcpath\" is not a regular file or directory" - unless -f $srcpath - or -d $srcpath; + # (note: this will fall through quietly if file is already gone) + die "Cannot operate on symlink \"$srcpath\"" if -l $srcpath; # Abort if destination path already exists. Should we allow directories # to exist already? @@ -104,25 +108,47 @@ sub _copypath_recurse # same name and we're done. if (-f $srcpath) { - copy($srcpath, $destpath) + my $fh; + unless (open($fh, '<', $srcpath)) + { + return 1 if ($!{ENOENT}); + die "open($srcpath) failed: $!"; + } + copy($fh, $destpath) or die "copy $srcpath -> $destpath failed: $!"; + close $fh; return 1; } - # Otherwise this is directory: create it on dest and recurse onto it. - mkdir($destpath) or die "mkdir($destpath) failed: $!"; - - opendir(my $directory, $srcpath) or die "could not opendir($srcpath): $!"; - while (my $entry = readdir($directory)) + # If it's a directory, create it on dest and recurse into it. + if (-d $srcpath) { - next if ($entry eq '.' or $entry eq '..'); - _copypath_recurse($base_src_dir, $base_dest_dir, - $curr_path eq '' ? $entry : "$curr_path/$entry", $filterfn) - or die "copypath $srcpath/$entry -> $destpath/$entry failed"; + my $directory; + unless (opendir($directory, $srcpath)) + { + return 1 if ($!{ENOENT}); + die "opendir($srcpath) failed: $!"; + } + + mkdir($destpath) or die "mkdir($destpath) failed: $!"; + + while (my $entry = readdir($directory)) + { + next if ($entry eq '.' or $entry eq '..'); + _copypath_recurse($base_src_dir, $base_dest_dir, + $curr_path eq '' ? $entry : "$curr_path/$entry", $filterfn) + or die "copypath $srcpath/$entry -> $destpath/$entry failed"; + } + + closedir($directory); + return 1; } - closedir($directory); - return 1; + # If it disappeared from sight, that's OK. + return 1 if !-e $srcpath; + + # Else it's some weird file type; complain. + die "Source path \"$srcpath\" is not a regular file or directory"; } 1; diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index f931236410..de9677c5b7 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -128,6 +128,55 @@ 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; + typname +------------ + _tmp_array +(1 row) + +SELECT typname FROM pg_type WHERE oid = 'tmp_array2[]'::regtype; + typname +------------- + _tmp_array2 +(1 row) + +ALTER TABLE tmp_array2 RENAME TO _tmp_array; +SELECT typname FROM pg_type WHERE oid = 'tmp_array[]'::regtype; + typname +------------- + __tmp_array +(1 row) + +SELECT typname FROM pg_type WHERE oid = '_tmp_array[]'::regtype; + typname +-------------- + ___tmp_array +(1 row) + +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; + typname +------------ + _tmp_array +(1 row) + +ALTER TABLE tmp_array RENAME TO _tmp_array; +SELECT typname FROM pg_type WHERE oid = '_tmp_array[]'::regtype; + typname +------------- + __tmp_array +(1 row) + +DROP TABLE _tmp_array; -- ALTER TABLE ... RENAME on non-table relations -- renaming indexes (FIXME: this should probably test the index's functionality) ALTER INDEX IF EXISTS __onek_unique1 RENAME TO tmp_onek_unique1; @@ -367,6 +416,26 @@ NOTICE: merging constraint "identity" with inherited definition ALTER TABLE tmp3 VALIDATE CONSTRAINT identity; NOTICE: boo: 16 NOTICE: boo: 20 +-- 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; +ERROR: check constraint "check_a_is_2" is violated by some row +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'; + convalidated +-------------- + t +(1 row) + +-- 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 ALTER TABLE tmp5 add constraint tmpconstr foreign key(a) references tmp4(a) match full; @@ -2768,6 +2837,39 @@ SELECT conname as constraint, obj_description(oid, 'pg_constraint') as comment F comment_test_positive_col_check | CHECK constraint on comment_test.positive_col (2 rows) +-- 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; +ERROR: foreign key constraint "comment_test_child_fk" cannot be implemented +DETAIL: Key columns "id" and "id" are of incompatible types: text and integer. +-- Comments should be intact +SELECT col_description('comment_test_child'::regclass, 1) as comment; + comment +----------------------------------- + Column 'id' on comment_test_child +(1 row) + +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; + index | comment +-----------------------+----------------------------------------------------- + comment_test_child_fk | Index backing the FOREIGN KEY of comment_test_child +(1 row) + +SELECT conname as constraint, obj_description(oid, 'pg_constraint') as comment FROM pg_constraint where conrelid = 'comment_test_child'::regclass ORDER BY 1, 2; + constraint | comment +-----------------------+---------------------------------------------- + comment_test_child_fk | FOREIGN KEY constraint of comment_test_child +(1 row) + -- 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 -- filenode function call can return NULL for a relation dropped concurrently diff --git a/src/test/regress/expected/create_type.out b/src/test/regress/expected/create_type.out index 7bdad4e9bb..5886a1f37f 100644 --- a/src/test/regress/expected/create_type.out +++ b/src/test/regress/expected/create_type.out @@ -115,6 +115,31 @@ CREATE TYPE not_existing_type (INPUT = array_in, ELEMENT = int, INTERNALLENGTH = 32); ERROR: function array_out(not_existing_type) does not exist +-- 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); +WARNING: changing argument type of function base_fn_out from "opaque" to base_type +WARNING: changing return type of function base_fn_in from opaque to base_type +WARNING: changing return type of function base_fn_out from opaque to cstring +DROP FUNCTION base_fn_in(cstring); -- error +ERROR: cannot drop function base_fn_in(cstring) because other objects depend on it +DETAIL: type base_type depends on function base_fn_in(cstring) +function base_fn_out(base_type) depends on type base_type +HINT: Use DROP ... CASCADE to drop the dependent objects too. +DROP FUNCTION base_fn_out(opaque); -- error +ERROR: function base_fn_out(opaque) does not exist +DROP TYPE base_type; -- error +ERROR: cannot drop type base_type because other objects depend on it +DETAIL: function base_fn_out(base_type) depends on type base_type +function base_fn_in(cstring) depends on type base_type +HINT: Use DROP ... CASCADE to drop the dependent objects too. +DROP TYPE base_type CASCADE; +NOTICE: drop cascades to 2 other objects +DETAIL: drop cascades to function base_fn_out(base_type) +drop cascades to function base_fn_in(cstring) -- Check usage of typmod with a user-defined type -- (we have borrowed numeric's typmod functions) CREATE TEMP TABLE mytab (foo widget(42,13,7)); -- should fail diff --git a/src/test/regress/expected/create_view.out b/src/test/regress/expected/create_view.out index b1c3cff931..e9a017fecb 100644 --- a/src/test/regress/expected/create_view.out +++ b/src/test/regress/expected/create_view.out @@ -1567,6 +1567,87 @@ select pg_get_viewdef('tt19v', true); 'foo'::text = ANY ((( SELECT ARRAY['abc'::text, 'def'::text, 'foo'::text] AS "array"))::text[]) AS c2; (1 row) +-- 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); + pg_get_viewdef +--------------------------------------------- + SELECT c.c, + + col.col, + + d.d, + + i4.i4, + + i8.i8 + + FROM COALESCE(1, 2) c(c), + + pg_collation_for('x'::text) col(col), + + CAST('now'::text::date AS date) d(d), + + CAST(1 + 2 AS integer) i4(i4), + + CAST((1 + 2)::bigint AS bigint) i8(i8); +(1 row) + +-- corner cases with empty join conditions +create view tt21v as +select * from tt5 natural inner join tt6; +select pg_get_viewdef('tt21v', true); + pg_get_viewdef +---------------------- + SELECT tt5.a, + + tt5.b, + + tt5.cc, + + tt6.c, + + tt6.d + + FROM tt5 + + CROSS JOIN tt6; +(1 row) + +create view tt22v as +select * from tt5 natural left join tt6; +select pg_get_viewdef('tt22v', true); + pg_get_viewdef +----------------------------- + SELECT tt5.a, + + tt5.b, + + tt5.cc, + + tt6.c, + + tt6.d + + FROM tt5 + + LEFT JOIN tt6 ON TRUE; +(1 row) + +-- 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); + pg_get_viewdef +------------------------------- + SELECT int8_tbl.q1 AS col_a,+ + int8_tbl.q2 AS col_b + + FROM int8_tbl + + UNION + + SELECT 42 AS col_a, + + 43 AS col_b; +(1 row) + +select pg_get_ruledef(oid, true) from pg_rewrite + where ev_class = 'tt23v'::regclass and ev_type = '1'; + pg_get_ruledef +----------------------------------------------------------------- + CREATE RULE "_RETURN" AS + + ON SELECT TO tt23v DO INSTEAD SELECT int8_tbl.q1 AS col_a,+ + int8_tbl.q2 AS col_b + + FROM int8_tbl + + UNION + + SELECT 42 AS col_a, + + 43 AS col_b; +(1 row) + -- 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/expected/domain.out b/src/test/regress/expected/domain.out index 41b70e287b..0694573c77 100644 --- a/src/test/regress/expected/domain.out +++ b/src/test/regress/expected/domain.out @@ -107,6 +107,7 @@ 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"}}'); ERROR: value too long for type character varying(4) +INSERT INTO domarrtest (testint4arr[1], testint4arr[3]) values (11,22); select * from domarrtest; testint4arr | testchar4arr ---------------+--------------------- @@ -115,7 +116,8 @@ select * from domarrtest; {2,2} | {{a,b},{c,d},{e,f}} {2,2} | {{a},{c}} | {{a,b,c},{d,e,f}} -(5 rows) + {11,NULL,22} | +(6 rows) select testint4arr[1], testchar4arr[2:2] from domarrtest; testint4arr | testchar4arr @@ -125,7 +127,8 @@ select testint4arr[1], testchar4arr[2:2] from domarrtest; 2 | {{c,d}} 2 | {{c}} | {{d,e,f}} -(5 rows) + 11 | +(6 rows) select array_dims(testint4arr), array_dims(testchar4arr) from domarrtest; array_dims | array_dims @@ -135,7 +138,8 @@ select array_dims(testint4arr), array_dims(testchar4arr) from domarrtest; [1:2] | [1:3][1:2] [1:2] | [1:2][1:1] | [1:2][1:3] -(5 rows) + [1:3] | +(6 rows) COPY domarrtest FROM stdin; COPY domarrtest FROM stdin; -- fail @@ -149,9 +153,21 @@ select * from domarrtest; {2,2} | {{a,b},{c,d},{e,f}} {2,2} | {{a},{c}} | {{a,b,c},{d,e,f}} + {11,NULL,22} | {3,4} | {q,w,e} | -(7 rows) +(8 rows) + +update domarrtest set + testint4arr[1] = testint4arr[1] + 1, + testint4arr[3] = testint4arr[3] - 1 +where testchar4arr is null; +select * from domarrtest where testchar4arr is null; + testint4arr | testchar4arr +------------------+-------------- + {12,NULL,21} | + {NULL,NULL,NULL} | +(2 rows) drop table domarrtest; drop domain domainint4arr restrict; @@ -182,6 +198,119 @@ select pg_typeof('{1,2,3}'::dia || 42); -- should be int[] not dia (1 row) 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 +ERROR: duplicate key value violates unique constraint "dcomptable_d1_key" +DETAIL: Key (d1)=({"(1,2)"}) already exists. +insert into dcomptable (d1[1]) values(row(9,10)); +insert into dcomptable (d1[1].r) values(11); +select * from dcomptable; + d1 +-------------------- + {"(1,2)"} + {"(3,4)","(5,6)"} + {"(7,8)","(9,10)"} + {"(9,10)"} + {"(11,)"} +(5 rows) + +select d1[2], d1[1].r, d1[1].i from dcomptable; + d1 | r | i +--------+----+---- + | 1 | 2 + (5,6) | 3 | 4 + (9,10) | 7 | 8 + | 9 | 10 + | 11 | +(5 rows) + +update dcomptable set d1[2] = row(d1[2].i, d1[2].r); +select * from dcomptable; + d1 +-------------------- + {"(1,2)","(,)"} + {"(3,4)","(6,5)"} + {"(7,8)","(10,9)"} + {"(9,10)","(,)"} + {"(11,)","(,)"} +(5 rows) + +update dcomptable set d1[1].r = d1[1].r + 1 where d1[1].i > 0; +select * from dcomptable; + d1 +-------------------- + {"(11,)","(,)"} + {"(2,2)","(,)"} + {"(4,4)","(6,5)"} + {"(8,8)","(10,9)"} + {"(10,10)","(,)"} +(5 rows) + +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 +ERROR: column "d1" of table "dcomptable" contains values that violate the new constraint +select array[row(2,1)]::dcomptypea; -- fail +ERROR: value for domain dcomptypea violates check constraint "c1" +insert into dcomptable values (array[row(1,2)]::comptype[]); +insert into dcomptable values (array[row(2,1)]::comptype[]); -- fail +ERROR: value for domain dcomptypea violates check constraint "c1" +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 +ERROR: value for domain dcomptypea violates check constraint "c1" +update dcomptable set d1[1].r = d1[1].r + 1 where d1[1].i > 0; -- fail +ERROR: value for domain dcomptypea violates check constraint "c1" +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; + d1 +-------------------- + {"(11,)","(,)"} + {"(99,)"} + {"(1,3)","(,)"} + {"(3,5)","(6,5)"} + {"(7,9)","(10,9)"} + {"(9,11)","(,)"} + {"(0,3)"} + {"(98,101)"} +(8 rows) + +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; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Update on public.dcomptable + -> Seq Scan on public.dcomptable + Output: (d1[1].r := (d1[1].r - '1'::double precision))[1].i := (d1[1].i + '1'::double precision), ctid + Filter: (dcomptable.d1[1].i > '0'::double precision) +(4 rows) + +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 + Table "public.dcomptable" + Column | Type | Modifiers | Storage | Stats target | Description +--------+------------+-----------+----------+--------------+------------- + d1 | dcomptypea | | extended | | +Indexes: + "dcomptable_d1_key" UNIQUE CONSTRAINT, btree (d1) +Rules: + silly AS + ON DELETE TO dcomptable DO INSTEAD UPDATE dcomptable SET d1[1].r = dcomptable.d1[1].r - 1::double precision, d1[1].i = dcomptable.d1[1].i + 1::double precision + WHERE dcomptable.d1[1].i > 0::double precision + +drop table dcomptable; +drop type comptype cascade; +NOTICE: drop cascades to type dcomptypea +-- 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'); @@ -532,11 +661,28 @@ insert into ddtest2 values(row(-1)); alter domain posint add constraint c1 check(value >= 0); ERROR: cannot alter type "posint" because column "ddtest2.f1" uses it 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); ERROR: cannot alter type "posint" because column "ddtest2.f1" uses it 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); +ERROR: cannot alter type "posint" because column "ddtest2.f1" uses it +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); +ERROR: cannot alter type "posint" because column "ddtest2.f1" uses it +drop table ddtest2; +drop type rposint; alter domain posint add constraint c1 check(value >= 0); create domain posint2 as posint check (value % 2 = 0); create table ddtest2(f1 posint2); diff --git a/src/test/regress/expected/foreign_data.out b/src/test/regress/expected/foreign_data.out index d6c1900c32..10e52613a4 100644 --- a/src/test/regress/expected/foreign_data.out +++ b/src/test/regress/expected/foreign_data.out @@ -1179,10 +1179,11 @@ ERROR: permission denied for foreign-data wrapper foo 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; NOTICE: drop cascades to 2 other objects -DETAIL: drop cascades to user mapping for public on server s9 -drop cascades to user mapping for regress_unprivileged_role on server s9 +\set VERBOSITY default RESET ROLE; CREATE SERVER s9 FOREIGN DATA WRAPPER foo; GRANT USAGE ON FOREIGN SERVER s9 TO regress_unprivileged_role; @@ -1194,7 +1195,66 @@ WARNING: no privileges were granted for "s9" CREATE USER MAPPING FOR current_user SERVER s9; DROP SERVER s9 CASCADE; -- ERROR ERROR: must be owner of foreign server s9 +-- 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+ + List of user mappings + Server | User name | FDW Options +--------+---------------------------+------------------- + s10 | public | ("user" 'secret') + s10 | regress_unprivileged_role | + s4 | regress_foreign_data_user | + s5 | regress_test_role | (modified '1') + s6 | regress_test_role | + s8 | public | + s8 | regress_foreign_data_user | + s9 | regress_unprivileged_role | + t1 | public | (modified '1') +(9 rows) + RESET ROLE; +-- superuser can see all option fields +\deu+ + List of user mappings + Server | User name | FDW Options +--------+---------------------------+--------------------- + s10 | public | ("user" 'secret') + s10 | regress_unprivileged_role | ("user" 'secret') + s4 | regress_foreign_data_user | + s5 | regress_test_role | (modified '1') + s6 | regress_test_role | + s8 | public | + s8 | regress_foreign_data_user | (password 'public') + s9 | regress_unprivileged_role | + t1 | public | (modified '1') +(9 rows) + +-- unprivileged user cannot see any option field +SET ROLE regress_unprivileged_role; +\deu+ + List of user mappings + Server | User name | FDW Options +--------+---------------------------+------------- + s10 | public | + s10 | regress_unprivileged_role | + s4 | regress_foreign_data_user | + s5 | regress_test_role | + s6 | regress_test_role | + s8 | public | + s8 | regress_foreign_data_user | + s9 | regress_unprivileged_role | + t1 | public | +(9 rows) + +RESET ROLE; +\set VERBOSITY terse +DROP SERVER s10 CASCADE; +NOTICE: drop cascades to 2 other objects +\set VERBOSITY default -- Triggers CREATE FUNCTION dummy_trigger() RETURNS TRIGGER AS $$ BEGIN @@ -1529,15 +1589,12 @@ Inherits: pt1 Child tables: ct3, ft3 +\set VERBOSITY terse DROP FOREIGN TABLE ft2; -- ERROR ERROR: cannot drop foreign table ft2 because other objects depend on it -DETAIL: table ct3 depends on foreign table ft2 -foreign table ft3 depends on foreign table ft2 -HINT: Use DROP ... CASCADE to drop the dependent objects too. DROP FOREIGN TABLE ft2 CASCADE; NOTICE: drop cascades to 2 other objects -DETAIL: drop cascades to table ct3 -drop cascades to foreign table ft3 +\set VERBOSITY default CREATE FOREIGN TABLE ft2 ( c1 integer NOT NULL, c2 text, @@ -1761,16 +1818,12 @@ owner of user mapping for regress_test_role on server s6 DROP SERVER t1 CASCADE; NOTICE: drop cascades to user mapping for public on server t1 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; NOTICE: drop cascades to 5 other objects -\set VERBOSITY default DROP SERVER s8 CASCADE; NOTICE: drop cascades to 2 other objects -DETAIL: drop cascades to user mapping for regress_foreign_data_user on server s8 -drop cascades to user mapping for public on server s8 +\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/expected/gist.out b/src/test/regress/expected/gist.out index c7181b0397..91f9998140 100644 --- a/src/test/regress/expected/gist.out +++ b/src/test/regress/expected/gist.out @@ -114,6 +114,40 @@ order by point(0.101, 0.101) <-> p; (0.5,0.5) (11 rows) +-- 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; + QUERY PLAN +-------------------------------------------------------------------- + Nested Loop + -> Values Scan on "*VALUES*" + -> Limit + -> Index Only Scan using gist_tbl_point_index on gist_tbl + Index Cond: (p <@ "*VALUES*".column1) + Order By: (p <-> ("*VALUES*".column1)[0]) +(6 rows) + +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; + p +------------- + (0.5,0.5) + (0.45,0.45) + (0.75,0.75) + (0.7,0.7) + (1,1) + (0.95,0.95) +(6 rows) + drop index gist_tbl_point_index; -- Test index-only scan with box opclass create index gist_tbl_box_index on gist_tbl using gist (b); diff --git a/src/test/regress/expected/join.out b/src/test/regress/expected/join.out index c3bb4fe767..eafc933e8f 100644 --- a/src/test/regress/expected/join.out +++ b/src/test/regress/expected/join.out @@ -5323,3 +5323,38 @@ ERROR: invalid reference to FROM-clause entry for table "xx1" LINE 1: ...xx1 using lateral (select * from int4_tbl where f1 = x1) ss; ^ HINT: There is an entry for table "xx1", but it cannot be referenced from this part of the query. +-- +-- 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; + QUERY PLAN +------------------------------------------------------------------ + Nested Loop Left Join + -> Nested Loop Left Join + -> Nested Loop Left Join + -> Index Scan using fkest_c_key on fkest f + Index Cond: (c = 1) + -> Index Only Scan using fkest1_pkey on fkest1 f1 + Index Cond: ((a = f.a) AND (b = f.b)) + -> Index Only Scan using fkest1_pkey on fkest1 f2 + Index Cond: ((a = f.a) AND (b = f.b)) + -> Index Only Scan using fkest1_pkey on fkest1 f3 + Index Cond: ((a = f.a) AND (b = f.b)) +(11 rows) + +rollback; diff --git a/src/test/regress/expected/large_object.out b/src/test/regress/expected/large_object.out deleted file mode 100644 index b00d47cc75..0000000000 --- a/src/test/regress/expected/large_object.out +++ /dev/null @@ -1,15 +0,0 @@ --- This is more-or-less DROP IF EXISTS LARGE OBJECT 3001; -WITH unlink AS (SELECT lo_unlink(loid) FROM pg_largeobject WHERE loid = 3001) SELECT 1; - ?column? ----------- - 1 -(1 row) - --- Test creation of a large object and leave it for testing pg_upgrade -SELECT lo_create(3001); - lo_create ------------ - 3001 -(1 row) - -COMMENT ON LARGE OBJECT 3001 IS 'testing comments'; diff --git a/src/test/regress/expected/matview.out b/src/test/regress/expected/matview.out index 1e34b9b6d7..ef5b21aa3a 100644 --- a/src/test/regress/expected/matview.out +++ b/src/test/regress/expected/matview.out @@ -382,26 +382,6 @@ NOTICE: drop cascades to 3 other objects DETAIL: drop cascades to view mvtest_vt2 drop cascades to materialized view mv_test2 drop cascades to materialized view mv_test3 --- 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; - i ---- -(0 rows) - -VACUUM ANALYZE mvtest_hugeview; -SELECT * FROM mvtest_hugeview WHERE i < 10; - i ---- -(0 rows) - -DROP TABLE mvtest_huge CASCADE; -NOTICE: drop cascades to materialized view mvtest_hugeview -- 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/expected/money.out b/src/test/regress/expected/money.out index 538235c4cc..efb48f1acd 100644 --- a/src/test/regress/expected/money.out +++ b/src/test/regress/expected/money.out @@ -185,6 +185,44 @@ SELECT * FROM money_data; $123.46 (1 row) +-- rounding vs. truncation in division +SELECT '878.08'::money / 11::float8; + ?column? +---------- + $79.83 +(1 row) + +SELECT '878.08'::money / 11::float4; + ?column? +---------- + $79.83 +(1 row) + +SELECT '878.08'::money / 11::int; + ?column? +---------- + $79.82 +(1 row) + +SELECT '878.08'::money / 11::smallint; + ?column? +---------- + $79.82 +(1 row) + +-- check for precision loss in division +SELECT '90000000000000099.00'::money / 10::int; + ?column? +--------------------------- + $9,000,000,000,000,009.90 +(1 row) + +SELECT '90000000000000099.00'::money / 10::smallint; + ?column? +--------------------------- + $9,000,000,000,000,009.90 +(1 row) + -- Cast int4/int8 to money SELECT 1234567890::money; money diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out index 8ac46ecef2..b845fdd842 100644 --- a/src/test/regress/expected/privileges.out +++ b/src/test/regress/expected/privileges.out @@ -184,6 +184,103 @@ SELECT * FROM atest1; -- ok 1 | two (2 rows) +-- 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; + QUERY PLAN +------------------------------------------------- + Nested Loop + -> Seq Scan on atest12 atest12_1 + Filter: (b <<< 5) + -> Index Scan using atest12_a_idx on atest12 + Index Cond: (a = atest12_1.b) + Filter: (b <<< 5) +(6 rows) + +-- And this one. +EXPLAIN (COSTS OFF) SELECT * FROM atest12 x, atest12 y + WHERE x.a = y.b and abs(y.a) <<< 5; + QUERY PLAN +--------------------------------------------------- + Nested Loop + -> Seq Scan on atest12 y + Filter: (abs(a) <<< 5) + -> Index Scan using atest12_a_idx on atest12 x + Index Cond: (a = y.b) +(5 rows) + +-- 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; +ERROR: permission denied for relation atest12 +-- 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; + QUERY PLAN +------------------------------------------- + Hash Join + Hash Cond: (atest12.a = atest12_1.b) + -> Seq Scan on atest12 + Filter: (b <<< 5) + -> Hash + -> Seq Scan on atest12 atest12_1 + Filter: (b <<< 5) +(7 rows) + +-- 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; + QUERY PLAN +------------------------------------------------- + Nested Loop + -> Seq Scan on atest12 atest12_1 + Filter: (b <<< 5) + -> Index Scan using atest12_a_idx on atest12 + Index Cond: (a = atest12_1.b) + Filter: (b <<< 5) +(6 rows) + +-- 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; + QUERY PLAN +-------------------------------------- + Hash Join + Hash Cond: (x.a = y.b) + -> Seq Scan on atest12 x + -> Hash + -> Seq Scan on atest12 y + Filter: (abs(a) <<< 5) +(6 rows) + +-- clean up (regress_user1's objects are all dropped later) +DROP FUNCTION leak2(integer, integer) CASCADE; +NOTICE: drop cascades to operator >>>(integer,integer) -- groups SET SESSION AUTHORIZATION regress_user3; CREATE TABLE atest3 (one int, two int, three int); @@ -1122,6 +1219,14 @@ SELECT lo_create(2002); 2002 (1 row) +SELECT loread(lo_open(1001, x'20000'::int), 32); -- allowed, for now + loread +-------- + \x +(1 row) + +SELECT lowrite(lo_open(1001, x'40000'::int), 'abcd'); -- fail, wrong mode +ERROR: large object descriptor 0 was not opened for writing SELECT loread(lo_open(1001, x'40000'::int), 32); loread -------- @@ -1217,6 +1322,8 @@ SELECT lowrite(lo_open(1002, x'20000'::int), 'abcd'); -- to be denied ERROR: permission denied for large object 1002 SELECT lo_truncate(lo_open(1002, x'20000'::int), 10); -- to be denied ERROR: permission denied for large object 1002 +SELECT lo_put(1002, 1, 'abcd'); -- to be denied +ERROR: permission denied for large object 1002 SELECT lo_unlink(1002); -- to be denied ERROR: must be owner of large object 1002 SELECT lo_export(1001, '/dev/null'); -- to be denied diff --git a/src/test/regress/expected/rolenames.out b/src/test/regress/expected/rolenames.out index fd058e4f7d..dce82f5de7 100644 --- a/src/test/regress/expected/rolenames.out +++ b/src/test/regress/expected/rolenames.out @@ -310,9 +310,9 @@ ERROR: syntax error at or near "CURRENT_ROLE" LINE 1: ALTER USER CURRENT_ROLE WITH LOGIN; ^ ALTER USER ALL WITH REPLICATION; -- error -ERROR: syntax error at or near "ALL" +ERROR: syntax error at or near "WITH" LINE 1: ALTER USER ALL WITH REPLICATION; - ^ + ^ ALTER USER SESSION_ROLE WITH NOREPLICATION; -- error ERROR: role "session_role" does not exist ALTER USER PUBLIC WITH NOREPLICATION; -- error @@ -392,9 +392,6 @@ ALTER USER SESSION_USER SET application_name to 'BAR'; ALTER USER "current_user" SET application_name to 'FOOFOO'; ALTER USER "Public" SET application_name to 'BARBAR'; ALTER USER ALL SET application_name to 'SLAP'; -ERROR: syntax error at or near "ALL" -LINE 1: ALTER USER ALL SET application_name to 'SLAP'; - ^ SELECT * FROM chksetconfig(); db | role | rolkeyword | setconfig -----+------------------+--------------+--------------------------- @@ -419,9 +416,6 @@ ALTER USER SESSION_USER RESET application_name; ALTER USER "current_user" RESET application_name; ALTER USER "Public" RESET application_name; ALTER USER ALL RESET application_name; -ERROR: syntax error at or near "ALL" -LINE 1: ALTER USER ALL RESET application_name; - ^ SELECT * FROM chksetconfig(); db | role | rolkeyword | setconfig ----+------+------------+----------- diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index 668645da83..8513e2e3cf 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -2152,7 +2152,9 @@ pg_user_mappings| SELECT u.oid AS umid, ELSE a.rolname END AS usename, CASE - WHEN (pg_has_role(s.srvowner, 'USAGE'::text) OR has_server_privilege(s.oid, 'USAGE'::text)) THEN u.umoptions + WHEN (((u.umuser <> (0)::oid) AND (a.rolname = "current_user"()) AND (pg_has_role(s.srvowner, 'USAGE'::text) OR has_server_privilege(s.oid, 'USAGE'::text))) OR ((u.umuser = (0)::oid) AND pg_has_role(s.srvowner, 'USAGE'::text)) OR ( SELECT pg_authid.rolsuper + FROM pg_authid + WHERE (pg_authid.rolname = "current_user"()))) THEN u.umoptions ELSE NULL::text[] END AS umoptions FROM ((pg_user_mapping u diff --git a/src/test/regress/expected/stats.out b/src/test/regress/expected/stats.out index a811265d69..4f397a3280 100644 --- a/src/test/regress/expected/stats.out +++ b/src/test/regress/expected/stats.out @@ -59,9 +59,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/expected/vacuum.out b/src/test/regress/expected/vacuum.out index 9b604be4b6..23a877e9cc 100644 --- a/src/test/regress/expected/vacuum.out +++ b/src/test/regress/expected/vacuum.out @@ -80,5 +80,10 @@ CONTEXT: SQL function "do_analyze" statement 1 SQL function "wrap_do_analyze" statement 1 VACUUM FULL vactst; VACUUM (DISABLE_PAGE_SKIPPING) vaccluster; +-- check behavior with duplicate column mentions +VACUUM ANALYZE vaccluster(i,i); +ERROR: column "i" of relation "vaccluster" is specified twice +ANALYZE vaccluster(i,i); +ERROR: column "i" of relation "vaccluster" is specified twice DROP TABLE vaccluster; DROP TABLE vactst; diff --git a/src/test/regress/expected/xmlmap.out b/src/test/regress/expected/xmlmap.out index b50396face..c08f8a0d9c 100644 --- a/src/test/regress/expected/xmlmap.out +++ b/src/test/regress/expected/xmlmap.out @@ -696,20 +696,58 @@ SELECT cursor_to_xml('xc'::refcursor, 5, false, true, ''); (1 row) -MOVE FIRST IN xc; +SELECT cursor_to_xmlschema('xc'::refcursor, false, true, ''); + cursor_to_xmlschema +---------------------------------------------------------------------------------------------- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(1 row) + +MOVE BACKWARD ALL IN xc; SELECT cursor_to_xml('xc'::refcursor, 5, true, false, ''); - cursor_to_xml ---------------- - + - 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/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/parallel_schedule b/src/test/regress/parallel_schedule index 04357e1de4..b0ef9d376d 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -84,7 +84,7 @@ test: select_into select_distinct select_distinct_on select_implicit select_havi # ---------- # Another group of parallel tests # ---------- -test: brin gin gist spgist privileges init_privs security_label collate matview lock replica_identity rowsecurity object_address tablesample groupingsets drop_operator large_object +test: brin gin gist spgist privileges init_privs security_label collate matview lock replica_identity rowsecurity object_address tablesample groupingsets drop_operator # ---------- # Another group of parallel tests diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index c7ee972453..0660b3bd6a 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -116,7 +116,6 @@ test: object_address test: tablesample test: groupingsets test: drop_operator -test: large_object test: alter_generic test: alter_operator test: misc diff --git a/src/test/regress/sql/alter_table.sql b/src/test/regress/sql/alter_table.sql index 4a32f99ec7..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) @@ -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 @@ -1771,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 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 5fe8b94aae..8a365749fc 100644 --- a/src/test/regress/sql/create_view.sql +++ b/src/test/regress/sql/create_view.sql @@ -520,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/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/join.sql b/src/test/regress/sql/join.sql index bf18a8f6c4..af6d6129c8 100644 --- a/src/test/regress/sql/join.sql +++ b/src/test/regress/sql/join.sql @@ -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/large_object.sql b/src/test/regress/sql/large_object.sql deleted file mode 100644 index a9e18b7c60..0000000000 --- a/src/test/regress/sql/large_object.sql +++ /dev/null @@ -1,8 +0,0 @@ - --- This is more-or-less DROP IF EXISTS LARGE OBJECT 3001; -WITH unlink AS (SELECT lo_unlink(loid) FROM pg_largeobject WHERE loid = 3001) SELECT 1; - --- Test creation of a large object and leave it for testing pg_upgrade -SELECT lo_create(3001); - -COMMENT ON LARGE OBJECT 3001 IS 'testing comments'; diff --git a/src/test/regress/sql/matview.sql b/src/test/regress/sql/matview.sql index e342918a3d..94829b9eaa 100644 --- a/src/test/regress/sql/matview.sql +++ b/src/test/regress/sql/matview.sql @@ -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/privileges.sql b/src/test/regress/sql/privileges.sql index 3d74abf043..b86c145285 100644 --- a/src/test/regress/sql/privileges.sql +++ b/src/test/regress/sql/privileges.sql @@ -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); @@ -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 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/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/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 a82d77c7ba..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 2016j. +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 f30c910f42..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 @@ -121,17 +115,17 @@ Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01 # 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 ############################################################################### @@ -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 6da1aef87f..3332d66842 100644 --- a/src/timezone/data/antarctica +++ b/src/timezone/data/antarctica @@ -110,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 diff --git a/src/timezone/data/asia b/src/timezone/data/asia index c6f63b5205..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): @@ -230,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 @@ -251,14 +245,14 @@ 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 @@ -267,9 +261,9 @@ Zone Asia/Brunei 7:39:40 - LMT 1926 Mar # Bandar Seri Begawan # Zone NAME GMTOFF RULES FORMAT [UNTIL] 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. @@ -332,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) @@ -390,28 +384,26 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D # mainly observed in coastal areas), the five zones were: # # Changbai Time ("Long-white Time", Long-white = Heilongjiang area) UT +08:30 -# Asia/Harbin (currently a link to Asia/Shanghai) +# Now part of Asia/Shanghai; its pre-1970 times are not recorded here. # Heilongjiang (except Mohe county), Jilin # # Zhongyuan Time ("Central plain Time") UT +08 -# Asia/Shanghai +# 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 +08 "from the end of the 19th century". # -# Long-shu Time (probably due to Long and Shu being two names of the area) UT +07 -# 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 +06 -# Asia/Urumqi -# This currently represents Kunlun Time as well, -# as apparently the two regions have been the same since 1970. +# 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; @@ -422,7 +414,7 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D # Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan. # # Kunlun Time UT +05:30 -# Asia/Kashgar (currently a link to Asia/Urumqi) +# 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, @@ -523,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) @@ -742,30 +734,29 @@ 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 ############################################################################### @@ -881,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 @@ -900,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 @@ -953,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 @@ -1011,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 @@ -1119,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 @@ -1164,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 ############################################################################### @@ -1464,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. @@ -1741,7 +1727,23 @@ 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-11-07): +# 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] @@ -1771,7 +1773,7 @@ Zone Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 6:00 - +06 # 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 -# Qostenay are unclear partly because of the 1997 Turgai +# 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 @@ -1808,7 +1810,7 @@ Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2 # 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 - 4:00 - +04 1930 Jun 21 + 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 @@ -1820,7 +1822,7 @@ Zone Asia/Atyrau 3:27:44 - LMT 1924 May 2 # 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 @@ -1926,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 @@ -1988,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 @@ -2138,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. @@ -2317,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 @@ -2685,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 @@ -2720,7 +2723,7 @@ Link Asia/Qatar Asia/Bahrain # # 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 @@ -2730,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 @@ -2796,8 +2798,8 @@ Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1 Zone Asia/Colombo 5:19:24 - LMT 1880 5:19:32 - MMT 1906 # Moratuwa Mean Time 5:30 - +0530 1942 Jan 5 - 5:30 0:30 +0530/+06 1942 Sep - 5:30 1:00 +0530/+0630 1945 Oct 16 2:00 + 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 @@ -2979,7 +2981,7 @@ Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2 # 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 @@ -2995,7 +2997,7 @@ Zone Asia/Ashgabat 3:53:32 - LMT 1924 May 2 # or Ashkhabad # 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 @@ -3068,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 0bca53e2ee..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 @@ -375,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. @@ -399,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. @@ -415,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 @@ -450,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 ############################################################################### @@ -491,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 @@ -514,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 ############################################################################### @@ -523,29 +524,29 @@ 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 @@ -560,28 +561,26 @@ Zone Pacific/Port_Moresby 9:48:40 - LMT 1880 # and seem to have controlled it until their 1945-08-21 surrender. # # The Autonomous Region of Bougainville switched from UT +10 to +11 -# on 2014-12-28 at 02:00. They call +11 "Bougainville Standard Time"; -# abbreviate this as BST. See: +# 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 @@ -662,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 @@ -693,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 @@ -713,7 +712,7 @@ Zone Pacific/Tongatapu 12:19:20 - LMT 1901 # 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 @@ -737,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, @@ -760,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 @@ -775,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 @@ -788,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 ############################################################################### @@ -804,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, @@ -829,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. diff --git a/src/timezone/data/backward b/src/timezone/data/backward index aa23dd844e..09f2a31b68 100644 --- a/src/timezone/data/backward +++ b/src/timezone/data/backward @@ -96,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 4a5085f422..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) @@ -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,43 +442,43 @@ 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 +# 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] @@ -491,12 +491,12 @@ Zone Asia/Muscat 3:54:24 - LMT 1920 # 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 @@ -511,16 +511,16 @@ Zone Asia/Tel_Aviv 2:19:04 - LMT 1880 # 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/europe b/src/timezone/data/europe index bf3bf06446..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,26 +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 MSK MSD 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, @@ -475,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 @@ -1064,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 @@ -1488,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 @@ -1952,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 @@ -2169,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 @@ -2536,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 @@ -3232,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 - @@ -3283,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 @@ -3296,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 @@ -3709,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/northamerica b/src/timezone/data/northamerica index e1ed9e4a87..6ede9dcd96 100644 --- a/src/timezone/data/northamerica +++ b/src/timezone/data/northamerica @@ -178,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 @@ -250,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". @@ -305,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 @@ -482,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, @@ -588,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 @@ -680,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. @@ -1068,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, @@ -2734,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 @@ -3014,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 @@ -3134,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 @@ -3146,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 @@ -3313,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. diff --git a/src/timezone/data/southamerica b/src/timezone/data/southamerica index 532145172f..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): @@ -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 0935dc26e2..eb48069d87 100644 --- a/src/timezone/known_abbrevs.txt +++ b/src/timezone/known_abbrevs.txt @@ -1,186 +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 -ART -10800 AST -14400 -AST 10800 AWST 28800 -AZOST 0 D -AZOT -3600 -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 -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 -GFT -10800 -GILT 43200 GMT 0 -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 -IRST 12600 IST 19800 IST 3600 D IST 7200 JST 32400 -KOST 39600 KST 30600 KST 32400 -LHDT 39600 D -LHST 37800 -LINT 50400 -MART -34200 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 PDT -25200 D -PET -18000 -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 SAST 7200 -SBT 39600 -SCT 14400 -SGT 28800 -SRT -10800 SST -39600 -TAHT -36000 -TKT 46800 -TLT 32400 -TVT 43200 UCT 0 -ULAST 32400 D -ULAT 28800 UTC 0 -UYT -10800 -VET -14400 -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 diff --git a/src/timezone/localtime.c b/src/timezone/localtime.c index ae9c2d23e6..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; @@ -1301,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; @@ -1330,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; } } @@ -1469,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 b8533d51e8..701112ec5b 100644 --- a/src/timezone/private.h +++ b/src/timezone/private.h @@ -38,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) /* @@ -88,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; @@ -98,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 4a0a01db65..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,26 +106,25 @@ 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, t, s, s + maxsize, &warn); if (p == s + maxsize) return 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 1a0729dcbb..709f6c023b 100644 --- a/src/timezone/tznames/Antarctica.txt +++ b/src/timezone/tznames/Antarctica.txt @@ -10,17 +10,12 @@ 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) +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 - # (Antarctica/Macquarie) +MIST 39600 # Macquarie Island Time (obsolete) NZDT 46800 D # New Zealand Daylight Time # (Antarctica/McMurdo) # (Pacific/Auckland) diff --git a/src/timezone/tznames/Asia.txt b/src/timezone/tznames/Asia.txt index c834b6f1e4..4e365b0028 100644 --- a/src/timezone/tznames/Asia.txt +++ b/src/timezone/tznames/Asia.txt @@ -7,15 +7,13 @@ # 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) @@ -32,27 +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 (obsolete) -BDT 21600 # Bangladesh Time - # (Asia/Dhaka) -BNT 28800 # Brunei Darussalam Time - # (Asia/Brunei) +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: @@ -116,27 +103,18 @@ 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 (obsolete) -IRST Asia/Tehran # Iran Standard Time - # (Asia/Tehran) +IRST Asia/Tehran # Iran Standard Time (obsolete) IRT 12600 # Iran Time (not in IANA database) # CONFLICT! IST is not unique # Other timezones: @@ -165,22 +143,17 @@ KST 32400 # Korean Standard Time LKT Asia/Colombo # Lanka Time (obsolete) MAGST Asia/Magadan # Magadan Summer Time (obsolete) MAGT Asia/Magadan # Magadan Time (obsolete) -MMT 23400 # Myanmar Time - # (Asia/Yangon) -MYT 28800 # Malaysia Time - # (Asia/Kuala_Lumpur) - # (Asia/Kuching) +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 (obsolete) ORAT Asia/Oral # Oral Time (obsolete) PETST Asia/Kamchatka # Petropavlovsk-Kamchatski Summer Time (obsolete) PETT Asia/Kamchatka # Petropavlovsk-Kamchatski Time (obsolete) -PHT 28800 # Philippine Time - # (Asia/Manila) +PHT 28800 # Philippine Time (obsolete) PKT 18000 # Pakistan Time # (Asia/Karachi) PKST 21600 D # Pakistan Summer Time @@ -188,20 +161,14 @@ PKST 21600 D # Pakistan Summer Time QYZT 21600 # Kizilorda Time (obsolete) SAKST Asia/Sakhalin # Sakhalin Summer Time (obsolete) SAKT Asia/Sakhalin # Sakhalin Time (obsolete) -SGT Asia/Singapore # Singapore Time - # (Asia/Singapore) +SGT Asia/Singapore # Singapore Time (obsolete) SRET 39600 # Srednekolymsk Time (obsolete) TJT 18000 # Tajikistan Time (obsolete) -TLT 32400 # East Timor Time - # (Asia/Dili) +TLT 32400 # East Timor Time (obsolete) TMT Asia/Ashgabat # Turkmenistan Time (obsolete) -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) +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 (obsolete) @@ -212,8 +179,7 @@ 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 (obsolete) YEKST 21600 D # Yekaterinburg Summer 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 591f2c4c25..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,20 +188,13 @@ 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 #################### @@ -240,44 +204,31 @@ 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: Armenia Time (Asia) -AMT -14400 # Amazon Time - # (America/Boa_Vista) - # (America/Campo_Grande) - # (America/Cuiaba) - # (America/Manaus) - # (America/Porto_Velho) +AMT -14400 # Amazon Time (obsolete) ANAST Asia/Anadyr # Anadyr Summer Time (obsolete) ANAT Asia/Anadyr # Anadyr Time (obsolete) AZST Asia/Baku # Azerbaijan Summer Time (obsolete) AZT Asia/Baku # Azerbaijan Time (obsolete) -BDT 21600 # Bangladesh Time - # (Asia/Dhaka) -BNT 28800 # Brunei Darussalam Time - # (Asia/Brunei) +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 (obsolete) -HKT 28800 # Hong Kong Time (not in IANA database) -ICT 25200 # Indochina Time - # (Asia/Bangkok) - # (Asia/Phnom_Penh) - # (Asia/Saigon) - # (Asia/Vientiane) +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) @@ -302,41 +253,30 @@ KST 32400 # Korean Standard Time LKT Asia/Colombo # Lanka Time (obsolete) MAGST Asia/Magadan # Magadan Summer Time (obsolete) MAGT Asia/Magadan # Magadan Time (obsolete) -MMT 23400 # Myanmar Time - # (Asia/Yangon) -MYT 28800 # Malaysia Time - # (Asia/Kuala_Lumpur) - # (Asia/Kuching) +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 (obsolete) PETST Asia/Kamchatka # Petropavlovsk-Kamchatski Summer Time (obsolete) PETT Asia/Kamchatka # Petropavlovsk-Kamchatski Time (obsolete) -PHT 28800 # Philippine Time - # (Asia/Manila) +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) +SGT Asia/Singapore # Singapore Time (obsolete) TJT 18000 # Tajikistan Time (obsolete) TMT Asia/Ashgabat # Turkmenistan Time (obsolete) -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) +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 (obsolete) -XJT 21600 # Xinjiang Time - # (Asia/Urumqi) +XJT 21600 # Xinjiang Time (obsolete) YAKST Asia/Yakutsk # Yakutsk Summer Time (obsolete) YAKT Asia/Yakutsk # Yakutsk Time (obsolete) YEKST 21600 D # Yekaterinburg Summer Time (obsolete) @@ -381,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 #################### @@ -400,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) @@ -422,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) @@ -614,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) @@ -638,92 +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) +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) +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 (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) +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 85d18d9d2d..0cb49f156b 100644 --- a/src/timezone/tznames/Europe.txt +++ b/src/timezone/tznames/Europe.txt @@ -182,10 +182,15 @@ 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) diff --git a/src/timezone/tznames/Indian.txt b/src/timezone/tznames/Indian.txt index 12842d366f..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,16 +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) +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 205655ed87..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,32 +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) +TAHT -36000 # Tahiti Time (obsolete) +TKT Pacific/Fakaofo # Tokelau Time (obsolete) TOT 46800 # Tonga Time (obsolete) -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) +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 a83cea12dd..db119265c3 100644 --- a/src/timezone/zic.c +++ b/src/timezone/zic.c @@ -9,10 +9,8 @@ #include "postgres_fe.h" #include -#include #include #include -#include #include "pg_getopt.h" @@ -28,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 @@ -47,9 +45,12 @@ typedef int64 zic_t; static ptrdiff_t const PTRDIFF_MAX = MAXVAL(ptrdiff_t, TYPE_BIT(ptrdiff_t)); #endif -/* The type and printf format for line numbers. */ +/* + * 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; -#define PRIdLINENO "d" struct rule { @@ -84,9 +85,9 @@ 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 { @@ -138,9 +139,9 @@ static char lowerit(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, ptrdiff_t 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); @@ -292,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} }; @@ -373,7 +377,7 @@ 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]; @@ -424,7 +428,7 @@ erealloc(void *ptr, size_t size) } static char * -ecpyalloc(char const * str) +ecpyalloc(char const *str) { return memcheck(strdup(str)); } @@ -436,7 +440,8 @@ growalloc(void *ptr, size_t itemsize, ptrdiff_t nitems, ptrdiff_t *nitems_alloc) return ptr; else { - ptrdiff_t amax = PTRDIFF_MAX - WORK_AROUND_QTBUG_53071; + 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(_("integer overflow")); @@ -450,7 +455,7 @@ growalloc(void *ptr, size_t itemsize, ptrdiff_t nitems, ptrdiff_t *nitems_alloc) */ static void -eats(char const * name, lineno_t num, char const * rname, lineno_t rnum) +eats(char const *name, lineno_t num, char const *rname, lineno_t rnum) { filename = name; linenum = num; @@ -459,7 +464,7 @@ eats(char const * name, lineno_t num, char const * rname, lineno_t rnum) } static void -eat(char const * name, lineno_t num) +eat(char const *name, lineno_t num) { eats(name, num, NULL, -1); } @@ -472,10 +477,10 @@ verror(const char *string, va_list args) * "*" -v on BSD systems. */ if (filename) - fprintf(stderr, _("\"%s\", line %" PRIdLINENO ": "), filename, linenum); + fprintf(stderr, _("\"%s\", line %d: "), filename, linenum); vfprintf(stderr, string, args); if (rfilename != NULL) - fprintf(stderr, _(" (rule from \"%s\", line %" PRIdLINENO ")"), + fprintf(stderr, _(" (rule from \"%s\", line %d)"), rfilename, rlinenum); fprintf(stderr, "\n"); } @@ -504,7 +509,7 @@ warning(const char *string,...) } static void -close_file(FILE *stream, char const * dir, 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); @@ -537,7 +542,7 @@ usage(FILE *stream, int status) ancestors. After this is done, all files are accessed with names relative to DIR. */ static void -change_directory(char const * dir) +change_directory(char const *dir) { if (chdir(dir) != 0) { @@ -564,7 +569,7 @@ static const char *leapsec; static const char *yitcommand; int -main(int argc, char *argv[]) +main(int argc, char **argv) { int c, k; @@ -573,7 +578,7 @@ main(int argc, char *argv[]) #ifndef WIN32 umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH)); -#endif /* !WIN32 */ +#endif progname = argv[0]; if (TYPE_BIT(zic_t) <64) { @@ -632,7 +637,10 @@ main(int argc, char *argv[]) break; case 'y': if (yitcommand == NULL) + { + warning(_("-y is obsolescent")); yitcommand = strdup(optarg); + } else { fprintf(stderr, @@ -721,8 +729,8 @@ 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 { @@ -813,7 +821,7 @@ namecheck(const char *name) */ #ifdef HAVE_SYMLINK static char * -relname(char const * from, char const * to) +relname(char const *from, char const *to) { size_t i, taillen, @@ -853,12 +861,12 @@ relname(char const * from, char const * to) } return result; } -#endif /* HAVE_SYMLINK */ +#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) +hardlinkerr(char const *from, char const *to) { int r = linkat(AT_FDCWD, from, AT_FDCWD, to, AT_SYMLINK_FOLLOW); @@ -866,7 +874,7 @@ hardlinkerr(char const * from, char const * to) } static void -dolink(char const * fromfield, char const * tofield, bool staysymlink) +dolink(char const *fromfield, char const *tofield, bool staysymlink) { bool todirs_made = false; int link_errno; @@ -921,7 +929,7 @@ dolink(char const * fromfield, char const * tofield, bool staysymlink) strerror(link_errno)); } else -#endif /* HAVE_SYMLINK */ +#endif /* HAVE_SYMLINK */ { FILE *fp, *tp; @@ -1010,7 +1018,7 @@ static const zic_t early_time = (WORK_AROUND_GNOME_BUG_730332 /* Return true if NAME is a directory. */ static bool -itsdir(char const * name) +itsdir(char const *name) { struct stat st; int res = stat(name, &st); @@ -1035,7 +1043,7 @@ itsdir(char const * name) /* Return true if NAME is a symbolic link. */ static bool -itssymlink(char const * name) +itssymlink(char const *name) { #ifdef HAVE_SYMLINK char c; @@ -1203,6 +1211,9 @@ 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")); @@ -1221,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" */ @@ -1251,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; @@ -1360,7 +1366,7 @@ inzone(char **fields, int nfields) strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) { error(_("duplicate zone name %s" - " (file \"%s\", line %" PRIdLINENO ")"), + " (file \"%s\", line %d)"), fields[ZF_NAME], zones[i].z_filename, zones[i].z_linenum); @@ -1574,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")); @@ -1600,9 +1596,9 @@ inleap(char **fields, int nfields) return; } t = tadd(t, tod); - if (t < early_time) + if (t < 0) { - error(_("leap second precedes Big Bang")); + error(_("leap second precedes Epoch")); return; } leapadd(t, positive, lp->l_value, count); @@ -1635,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) { @@ -1754,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) @@ -2141,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) @@ -2324,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; @@ -2410,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; @@ -2492,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; @@ -2510,7 +2509,7 @@ enum YEAR_BY_YEAR_ZONE = 1}; static int -stringzone(char *result, struct zone const * zpfirst, ptrdiff_t zonecount) +stringzone(char *result, struct zone const *zpfirst, ptrdiff_t zonecount) { const struct zone *zp; struct rule *rp; @@ -2645,7 +2644,7 @@ stringzone(char *result, struct zone const * zpfirst, ptrdiff_t zonecount) } static void -outzone(const struct zone * zpfirst, ptrdiff_t zonecount) +outzone(const struct zone *zpfirst, ptrdiff_t zonecount) { const struct zone *zp; struct rule *rp; @@ -2672,6 +2671,9 @@ outzone(const struct zone * zpfirst, ptrdiff_t zonecount) 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; @@ -2781,12 +2783,13 @@ outzone(const struct zone * zpfirst, ptrdiff_t 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) { /* @@ -2836,15 +2839,21 @@ outzone(const struct zone * zpfirst, ptrdiff_t 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 (;;) { ptrdiff_t k; zic_t jtime, - ktime = 0; + ktime; zic_t offset; + INITIALIZE(ktime); if (useuntil) { /* @@ -2921,7 +2930,8 @@ outzone(const struct zone * zpfirst, ptrdiff_t zonecount) continue; } if (*startbuf == '\0' && - startoff == oadd(zp->z_gmtoff, stdoff)) + startoff == oadd(zp->z_gmtoff, + stdoff)) { doabbr(startbuf, zp, @@ -3037,7 +3047,7 @@ addtt(zic_t starttime, int type) } 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; @@ -3096,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) @@ -3124,19 +3127,26 @@ 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) +shellquote(char *b, char const *s) { *b++ = '\''; while (*s) @@ -3183,7 +3193,7 @@ yearistype(zic_t year, const char *type) 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) { @@ -3354,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; @@ -3363,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. */ @@ -3375,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; } @@ -3470,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; @@ -3562,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); } @@ -3606,18 +3664,22 @@ newabbr(const char *string) 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) +mkdirs(char const *argname, bool ancestors) { char *name; char *cp; cp = name = ecpyalloc(argname); + /* + * 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. */ -#ifdef WIN32 - if (is_alpha(name[0]) && name[1] == ':') - cp += 2; -#endif while (*cp == '/') cp++; 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/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"; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy